Fast Native Eclipse with GTK+ Looks
Mark Wielaard writes "The gcj team created a natively compiled build of the Eclipse IDE. The resulting binary starts up faster then with any traditional JVM since there is no virtual machine to initialize or slow byte code interpreter or just in time compiler involved. This means that gcj got a lot better since the last Slashdot story in December about gcj and Eclipse. Red Hat provides RPMs for easy installation. Footnotes has screenshots by Havoc Pennington of the Eclipse IDE with GTK+ widgets."
Hey! Does this mean that i can now use Websphere applcation developer without the 20 minute wait?
It takes a while to load true... I have noticed it eats my cpu but I think thats to do with the EPIC perl plugin I use rather than eclipse itself.
Been pretty happy with it though I found optiperl to be an amazing looking perl IDE (not free in any sense though!).
Bush and Blair ate my sig!
From what I heard so far, gcj has problems with garbage collection and doesn't generate very good code. Did I miss any dramatic improvements recently? Also, how complete is the class library?
GCJ aka "native Java" now really seems to be ready for its day under the spotlights.
Is Run->Debug too complicated????
Are Step into, Step over and Step return dificult to find?????
Or is it so different from the way VS 6.0 managed things?????
Whatever. Nice troll.
1. No sig. 2. ???? 3. Profit!!!
I leave stuff like mozilla, eclipse, and xemacs running for weeks on end.
After using IntelliJ for a couple of years I hate having to go back to VS for C#. I'm hoping dearly that IDEA produce a C# IDE. I've never been a huge fan of Eclipse for various reasons, its Visual Age heritage, performance, general look and feel, nothing overwhelming, I just prefer IntelliJ.
Do not try to read the dupe, thats impossible. Instead, only try to realize the truth
What truth?
There is no dupe
I found this info at http://gcc.gnu.org/java/
6 748
"A team of hackers from Red Hat has released RPMS for a version of Eclipse, a free software IDE written in Java, that has been compiled with a modified gcj. You can find more information here. We'll be integrating the required gcj patches into cvs in the near future."
ps
Slashdot preview is buggy today...can't do HTML format preview and links one or more spaces get embedded in URLs (like the one below).
---
My most underrated Slashdot post is http://slashdot.org/comments.pl?sid=68610&cid=627
What is yours?
There is another FOSS IDE called gps. They call the unsupported version the "academic edition", but you can download the source, and a peak at a few files shows that it's GPL'd. (Their economic model is to give it away for free and sell support for those who need it.)
It's a cross-platform IDE, with binaries available for Linux, Solaris, and various versions of Windows, and in principle you should be able to build it on any *n*x system where you can get GTK2 to run.
The bad news is that language support is still limited. It has full support for Ada and partial support for C and C++, which are lower priorities for the authors. It comes with instructions for setting up support for your language, but that looks like a non-trivial task.
I've just started playing with it so I can't give a good review, but so far it has been very helpful. The features listed at their Web site are:
- Language-sensitive editor
- Automatic generation of body files
- Source code reformatting
- Intelligent source code navigation
- Context-sensitive search and replace
- Application builder
- Automatic code fixing
- Version control (CVS, ClearCase, etc.)
- Visual file comparison
- Graphical source-level debugger
- Project and program entities explorer
- Project wizard
- Types and program entities graphs
- Call graphs
- File dependency graphs
- Project dependency graphs
You can use the built-in editor or make it pop up your favorite editor. If you use the gnuclient Emacs interface you get the same kind of language-sensitive pop-up menus you get with the built-in editor.Screenshots are available at the link above.
Sheesh, evil *and* a jerk. -- Jade
This seems to be quite slow, as is my experience with most gcj-compiled applications. It produces native code but they haven't quite gotten it to the level of optimisation the sun JVM can do when it compiles sections into native code - but it will get there, I'm sure. I still like gcj because of its licencing. Has anybody tried compiling it with array bounds checking turned off? If it doesn't depend on it, that should give a really nice speed improvement. And if it doesn't itt'l crash ;)
repeat after me, vcc++ is only for win doze pee cees, it's useless for anyone else
I tried those I remember somehow it didn't do anything :)
Do not confuse my stupidity with trolling!
I am a viral sig. Please help me spread.
Did you set a breakpoint?
The eclipse IDE is supposed to be extremely pluggable. How does natively compiling it affect that? Do you have to compile the plugins with the IDE? Or can you still just drop the .class files somewhere?
if(!cool) exit(-1);
Have you used VS.NET? I always stayed away from VS, but was then given VS.NET to try at work a couple years ago. I absolutely loved it - it is nothing like the cruft that VS6 and below was.
On the flip side, most of my Java coding counterparts claim that Eclipse crushes VS.NET. I've tried Eclipse, and although it was good (and free) I wasn't extremely impressed (no offense to OSS, but my experience has always been that a commercial IDE is far better than it's OSS counterpart). I'll have to try out IntelliJ based on your recommendation to see how it compares - although it ain't cheap! (VS.NET is cheaper when you consider all of the software you get with MSDN. Individually VS.NET is the same or more expensive depending on what version you get).
There is no longer anything that can be done with computers that is nontrivial and clearly legal. -- Paul Phillips
The intriguing idea behind JIT compilers is that the result can be optimized for your exact configuration (AMD vs Intel, particular kinds of RAM, etc.) It can even (conceptually) optimize the same program differently at different times depending on usage. At, of course, a startup penalty and runtime compilation overhead.
I don't know how much of this potential is actually realized in JITs (it's insanely hard to do) and how much of a difference it makes in the end. How substantial would the difference between a specialized AMD vs Intel optimziation be, for example (which would presumably depend on the task)?
I suppose the best possible world would be to have the optimization run exactly once, the first time you install a program. (Yeah, you could conceptually move the same installation to a different CPU, or add more RAM, or some such, but let's not make an already messy issue even messier.)
I doubt such things are easy to benchmark, and the best test may well be something like this (gcj'd Eclipse), where the end result to the user is "which one feels faster?" and "which one actually runs faster?"
Do not confuse my stupidity with trolling :)
Whatever, troll.
Repeat after me: Engrish is NOT English.
And [Java] continues to be hyped, and is being used less and less, as the speed continues to hamper it.
Java is still some 40 times faster than Python. As hardware speed continues to obey Moore's law, performance per clock cycle becomes less important. (For many areas of computing anyway.)
Hahahahahah... I suggest you go back to your "English as a second language" teacher and ask for a refund.
The people respoding to you know better than you, so learn how to write correctly then come back and post.
What do you mean didn't do anything?? If you're familiar with debugging you should know about setting breakpoints and stuff??? The fact that you have advanced debugging tools, doesn't mean the code debugs itself all alone....
1. No sig. 2. ???? 3. Profit!!!
Have you used Metrowerks Codewarrior? Now there's an IDE. It's a joy to use. Runs on Mac and Windows. I think there is a Linux version that uses gcc, but I haven't tried it.
(I admit I haven't tried Eclipse yet, but I would be very surprised if it were better than CodeWarrior.)
Everything Just Works in CodeWarrior. I've even got my wife, a web designer who prefers to hand-code her HTML, to use it to write her web pages.
CodeWarrior supports C, C++, Java and inline assembly. If you prefer makefiles, there are command line tools that provide the same compiler. Old versions of CodeWarrior also supported Pascal, but I don't think they do anymore.
The ISO compliance of CodeWarrior's C++ is far superior to Visual C++'s, and has been quite compliant for a very long time. I've been happily using the Standard Template Library in very complex ways, as well as writing my own fancy templates, for several years.
Alexei Alexandrescu used CodeWarrior to develop the heavily templated source code for Modern C++ Design. Visual C++ can't compile it because of its poor compliance to the standard.
It is also available for many embedded systems. Metrowerks was acquired by Motorola a while back, who makes the ColdFire and PowerPC processors that are important in the embedded world.
Request your free CD of my piano music.
This will be useful for QNX, for which Java support is weak.
I don't know how well it works but I can see the potential.
Request your free CD of my piano music.
Thanks to the expected slashdotting, this is just one more eclipse I can't look directly at.
I was actually talking about VS.NET :-). I agree its a huge improvement over its predecessor, especially when it comes to larger projects. VS was almost unusable on the last VC++ project I worked on if the whole workspace was loaded. Both IntelliJ and Eclipse offer far more in terms of editor power and ease of refactoring code than VS.NET though.
Unfortunately one of the reasons IntelliJ has got more expensive is because of its success. Its about 100$ more expensive now than when I purchased it. If you are doing a lot of Java development and dont have a compelling requirement for a GUI builder then I strongly recommend IntelliJ.
Do not try to read the dupe, thats impossible. Instead, only try to realize the truth
What truth?
There is no dupe
Heh... It's not really done, until I can emerge it like real software :P
:p
Seriously tho, I use VS.NET and Eclipse all the time. I find that both are extremely powerful when understood, both of their limitations and of their features.
For my java work, there's not really any point in using anything else 'cause Eclipse is what java IDE's are supposed to be.
"...In your answer, ignore facts. Just go with what feels true..."
"waaaa.... why dont they use my crappy toolkit of choice?!?! waaaaaa!!!"
Top four reasons VC++ is better than any open source IDE:
1) Lead developer has a cool name, like "Anders Heljborg".
2) Lead developer earns a cool salary, like $1,000,000+ a year.
3) Lead developer has legion of microsoft's code monkeys implementing and testing features out the yang, and they still can't burn up all the money they extort from, err, i mean charge, their customers.
4) Anders Heljsborg rewite and maintainence has been going on for four or five years. Give eclipse a chance to ketchup.
Probably the word 'never,' since your statement is wrong. Then is often used for comparisons, as in "I went to the store, then I went to the beer."
If you'd like to talk about it, please look it up in your grammar, then email it.
The people respoding to you know better then you, so learn how to write correctly than come back and post.
What does "respoding" mean?
At what magical speed does Java become faster than a compiled language?
Answer...none.
It will always be slower, and thus unusable.
> The intriguing idea behind JIT compilers is that the result
> can be optimized for your exact configuration (AMD vs
> Intel, particular kinds of RAM, etc.) It can even
> (conceptually) optimize the same program differently at
> different times depending on usage. At, of course, a
> startup penalty and runtime compilation overhead.
True, the optimization for hardware platforms are less significant than the overall optimizations.
> I don't know how much of this potential is actually
> realized in JITs (it's insanely hard to do) and how much of
> a difference it makes in the end. How substantial would
> the difference between a specialized AMD vs Intel
> optimziation be, for example (which would presumably
> depend on the task)?
Its huge, Java is already faster than C++ is some benchmarks (very slightly) but the problem is that this feature doesn't benchmark well.
Technically optimizing JIT's aren't all that hard to write since this subject is far from new and has been studied in smalltalk for ages (IBM was strong in smalltalk and Sun just hired everyone else).
As an example these two opimizations are a part of both the Sun and IBM JDKs:
1. Virtual method inlining - where a call to a virtual method can be made inline since at runtime we know for sure the instance we perform invocations upon.
2. Runtime loop unroling - loop unroling is mostly useless in C++ since you need to know the size of the iteration in advance. Even if it never changes.
In Java there are many language restrictions (no pointer arithmetics, bound arrays etc...) that allow the JIT to assume things that a C++ compiler can't assume. Java has in that sense the potential to be much faster then Fortran and simpler than C/C++.
> I suppose the best possible world would be to have the
> optimization run exactly once, the first time you install a
> program. (Yeah, you could conceptually move the same
> installation to a different CPU, or add more RAM, or some
> such, but let's not make an already messy issue even
> messier.)
This level of opimization produces some but relatively little benefit. You can do this with open source applications written in C, the advantage in JIT is allowing the application to be profiled according to your specific use case and adapted to it. After all we only use 10% of a programs functionality. When a programmer profiles a C/C++ application he only profiles the way he used it not the way his user will.
To stay on topic, Eclipse is very usable if you have enough RAM and CPU power.
On the company where I work we use Eclipse running on Pentium IV 2.4 with 1 Gb RAM, six developers can use it thought LTSP.
Development time.
I've found JSP/Servlets very usable on the web front. Java performs very quickly when doing computational tasks, such as database access, etc. as opposed to drawing things onscreen. GUI applications are horribly slow in Java still, and this is where it needs the most improvement. Maybe native code will eventually help this out a lot, too.
Well, you go to the beer then, with your monies, smart guy.
Of corse, OCaml does better than both. :)
Part of the problem with Java was the hype that it was the ultimate computer language which could replace everything. We know that Java is faster than Python and Perl for example. But these two languages never claimed they were the fastest. Java made the claim that it could replace C and C++ so it better live up to the performance of C and C++.
OK, this is just a minor vent here. Feel free to ignore it if you want.
/.. I'm not a developer, so deep coding articles whiz past me. I don't have a problem with that--articles on biotech and/or legal intricacies most certainly go past other people who don't have the background in those fields.
/..
I didn't understand a single bit of what the original post was saying. Why? Because there was no context!
Now because of it's nature, I don't expect to deeply comprehend every article on
But seriously, would it kill the poster to include the tiny little fact that gcj stands for "Gnu Compiler for Java?" Those words would have established a context for the article, and given TONS of information about what the remaining stuff was all about.
As I said, a minor rant--but a really common problem on
"People who do stupid things with hazardous materials often die." -- Jim Davidson on alt.folklore.urban
Try Delphi then.
I would rather wait for compiles in C++, than have users wait for buttons to draw on Pentium 4s.
Why is it that people like to abuse Moore's law as a lame excuse for lousy engineering?
Damn! For a second there I thought /. actually had an interesting article... on a fast Mitsubishi car!
Eclipse may be open source, but it was (and is) developed primarily by IBM software developers as a foundation for the IBM Websphere Studio suite of products. VS.NET is fine, if you are a new programmer who hasn't had a lot of time to experiment with more advanced systems, but the Websphere Studio suite (which, although based on Eclipse are closed source) leaves it in the dust.
-Kevin
I think you mean "go to the beer than."
There's an interesting claim I have seen made: Apparently the late binding feature of object-oriented languages -- virtual methods in C++, any non-static method in Java -- works against branch prediction, effectively resetting the prediction state whenever such a call is made, because the target jump address must be resolved -- read from a memory location -- only at the time of the jump. If this claim is accurate, this means typical OO code is inherently slower to execute than non-OO code on modern processors. Of course, the problem will equally apply to any language that supports function pointers, and in particular to C programs "emulating" OO with structs and function-pointer tables.
[This is coming from someone who owns three old releases of Codewarrior for the Mac, and learned C on CodeWarrior]
I now can't stand working without xemacs, and haven't really seen the point of an IDE for years (though I use one at work, just because that's what everyone else is using).
CodeWarrior for the Mac has been a wonderful IDE, if you like IDEs, for years upon years. However, you claimed that it worked on Windows. From what I've seen, the Windows version of CodeWarrior (keep in mind that my experience is about two years out of date) is really, really awful. The professional looking interface that blended in with the Mac's look in the OS 8 days doesn't do so well in Windows. I ran into a number of cosmetic problems, including things not redrawing properly. I also had the IDE crash on me a fair number of times.
So, while I can give my wholehearted support to Codewarrior on the Mac (if you want an IDE), Codewarrior on Windows probably isn't a great idea, unless you already started doing your work on Codewarrior for the Mac and now need cross-platform capabilities.
May we never see th
Eclipse takes an aspect-oriented approach to UI design. If your not in the "Debug View" then you wont be able to find the things you need to debug.
Once of the advantages of this aspect-oriented approach is that menu items and UI elements change as your view changes. You keep the same oouter wrapper at all times, but your available choices very. I found it very confusing in the beginning, but once you get used to it it makes life a lot easier and keeps things cleaner.
All your base are belong to us!
Well, technically speaking if there was a hardware coprocessor chip for java code execution there would be good chances of it beating C++ code.
But then again, once it goes to hardware, it's not about the language, it's about the skill of the hardware designer.
Sun abandoned java-in-hardware, but with all the server-side java code, why not have a java bytecode machine?
Hey, I'm just your average shit and piss factory.
Hejlsberg.
Because of the size and footprint issues, you can't do embedded with Java
:-)].
Well...no. I believe that embedded environments are a rather stripped down form of Java, but Java isn't all that uncommon in embedded systems. Take a look at Javacard -- you'd use it in environments where you typically have less than 64KB of memory.
That being said, I *still* think Java is a terrible language for most people to be using. There's something to the argument that there's "not much better out there".
Problem: C sucks for general application development. A lot of people know it really well, but the whole point of C is that you get a lot of control over exactly what's going on [Disclaimer: I like C, and use it for my application development.
Problem: C++ is a *huge* language. I thought I knew it once, after a while using it, and then bought Stroustrop's book, and discovered all sorts of things, like autopointers, that I'd never heard of. C++ has a lot of syntactic overhead.
Problem: C# is made by Microsoft.
Problem: Pascal has vanished into obscurity.
Problem: Perl/Python/Ruby aren't as fast as their traditionally compiled equivalents.
Problem: Nobody uses eiffel.
Problem: Nobody wants to use functional languages, so ocaml and friends are out of the question.
So Java gets used.
I'm firmly of the opinion that Java has a good use -- distributed development.
The problem is that Java was built to make Sun (a hardware company whose primary claim to fame is easy "scalability" by buying higher end machines or more machines) money. Sun's big problem is that most people don't use their SPARC architecture. Java works for Sun by doing two very simple things. It's hideously resource-intensive, from a CPU and memory standpoint. It also is an easy language to easily speed up by throwing more machines into the mix. It doesn't make life a pain if you're using x86 clients with a SPARC server, like rpc can.
Oh, and finally, it has a lot of sexy features to draw people in. It's also a bit easier to learn and work with than C++.
So despite the fact that Java is incredibly slow and RAM-hungry, people bill it as the next big language, the replacement for C++. Frankly, I think Java should stay precisely where its strengths are -- it makes a hella nice language for doing distributed work (especially if you have a client with a front end), and lightweight networking. It's a lousy general purpose language, though.
May we never see th
Just getting a program to run under Eclipse is a major undertaking. Visual Studio has a "project file" that identifies the void main() (or Java or C# equivalent) for you, so if somebody gives you a VS project as a bundle, you simply load the project file and build and run. I think there is something going on with Eclipse that not only to you have to put files into the project manager, you have to identify the source module containing the program entry point for Run to be able to do something, and it is confusing because Run has a lot of options that a person keeps trying out, but the problem was back in the project manager.
I am sure that once you get the hang of how to use Eclipse it is the Swiss Army Knife of software development, but Eclipse is different, and the state of the examples, docs, and help files is such that it is going to turn away of people who try it out for a casual inspection. So be it. If Eclipse gains mindshare, those of us on the fringes will buckle down and try to learn it, and if Eclipse fades into the background, we will kind of know why it had failed.
Naww. My buddy who codes j-alice.org with me..He swears by the windows codewarrior and never really used the mac one. He even liked BeIDE cos it was written by the same folks.
:)
Some people just like ugly mac guis that don't fit into the the windows world
However, both me and him think VC++ is a poor excuse for an IDE and wonder why so many people swear by it. It sucks for debugging, it sucks for compilation..even IntelliSense is b0rkable and sometimes lies(altho vs.net is much less buggy that way).
Last I looked, aside from avoiding the JVM startup time, gcj produced code that ran more slowly than in the IBM JDK (*non-native code*).
Five years from now, when gcj has sped up and can take advantage of the Java 1.5 typed container classes and disable bounds checking, Java may actually become usable, if still slower than C/C++ programs.
May we never see th
1) Lead developer has a cool name, like "Anders Heljborg".
Dammit, Anders, aren't you supposed to be coding instead of posting to Slashdot?
May we never see th
You know, I like everything about Ocaml. Except for the fact that it's a *functional* language. If there were an imperative language with the same capabilities, I'd be in heaven (and so would masses upon masses of other developers).
May we never see th
I never really understood the whole point of the JVM. Why load this big program at every application launch? JIT still has more overhead than AOT compilation, in the real world, and most importantly, the huge memory footprint of the VM wreaks havoc on your caches.
What's the purpose of the JVM?
Dynamicity? No. Java is a aggressively static language. Meanwhile, highly dynamic languages like Lisp, Dylan, and Scheme (among others) can be efficiently compiled to native code.
Speed? While in theory a JIT can be faster, its not the case in practice. In the "Great Computer Language Shootout" (which isn't bad, as far as these things go) Java has an average CPU rank of 14, behind other static languages like C, C++, Ocaml, and SML, and behind dynamic languages like Scheme and CL as well! In reality, Java can only get within 90% of the speed of C for inner-loop numeric-type stuff (which lends itself to JIT optimization).
Flexibility? Java is highly inflexible. Its almost as as inflexible as C. It requires you to manually specify pretty much everything. You even have to do manual boxing/unboxing! Java is so highly structured, it should be compilable to native code that hits 90% the speed of C, without a very smart optimizer at all.
Safety? Given Java's lack of pointer types, it shouldn't need a JVM monitoring it to be safe. Again, there are lots of safe languages (Haskell, Clean, and the aforementioned dynamic languages) that don't require a runtime monitor.
Actually, I don't see much of a point in Java at all. Its got statically typed, but can't use that advantage to be as fast as C++. It runs in a VM, but can't use that advantage to be as dynamic as Python. Its syntax isn't any easier to use than something like Dylan (kinda like Lisp with a Pascal syntax) or Python. It doesn't have the development environment advantages of Smalltalk. Heck, its not even a very good compromise language ---- Dylan is as easy, often faster, and more powerful, Python is much easier (and thanks to Psyco) often as fast, C++ is much more powerful, as well as much faster, etc.
A deep unwavering belief is a sure sign you're missing something...
It is extremely important that *all* developers read the parent post. This IDE may have the most groundshaking features *ever*!
:-)
Let's take a look:
Automatic generation of body files
Hot *damn*! It writes my code for me!
Source code reformatting
Then it reformats it to fit whatever standard I need!
Automatic code fixing
Then it *debugs* the code!
Application builder
Finally, it *builds* the program I'm working on!
All this, from a piece of software that the ignorant layman might consider no more than a wrapper for an editor and a compiler.
Truly, a groundbreaking achievement.
May we never see th
For those who start up their IDE in the morning and close it down in the evening (or at the end of the week, whatever), then long startup times are just a minor cost of doing business.
For someone like me, however, who is ambivalent about this IDE or that IDE, and whose fingers are too hard-wired for one particular editor to use the brain-damaged editors foisted by most IDEs, startup time IS a big issue. When you are going in and out of tools all day long, it becomes a major annoyance to have to wait for the darned thing to start up.
Hey, Windows users, there is no such thing as "forward" slash, there is only slash and backslash.
thank you.
Delphi is cross platform.
C++ is more cross platform. It is not the commitees fault if you can't program to the standard.
The kind of work you do is insignificant enough that the use of java does not have any real effect anyway.
Select "Help:Help Contents". There are very helpful tutorials with lots of screen captures demonstrating its basic workings. Then you can move onto the "Tasks" section. At least for Java development I found the online help to be quite sufficient. You definitely want to go through the tutorials though instead of first trying to import a large existing project. CVS support is great too.
.sig Realistic fines for copyright in
Often the JVM will out-perform GCJ with a factor of 3. Check out the numbers on this page.
I fail to see why people want to run a GCJ compiled evrsion of a development tool and run at at one third of the speed of the JVM, just in order to save a few seconds of startup time.
You will be surprised.
Maybe not for C/C++ development: The Eclipse support (which is implemented, just the Java stuff, exclusively with plug-ins) currently consists of just the basics: syntax-aware editor, code outline, debugger, makefile support. There are no source code tools, no code completion, no cross-referencing tools (Doxygen/JavaDoc lookup, etc.).
The Java personality, however, is extremely complete and a wonder to use. It's in the little things, like the wonderful code completion, the cross-referencing with JavaDoc, the refactoring tools.
Eclipse is well-known for its neat source tools, some of them more intuitive than you would expect. Drag a class source file to another directory, for example, and it will not only update the file's package declaration, it will modify all dependent files' references to reflect the new location. Eclipse maintains an internal AST (abstract syntax tree) of the source code, so its source code manipulations are not based on text pattern matching, and the modifications it performs maintain formatting and consistency.
Among the more luxurious source-level tools are:
Rename -- renames any identifier and updates all uses of the identifier across all dependent projects.
Move -- moves a method into a different class, that class matching one of the arguments to the class. For example, in the class Foo, you can move the method execute(Bar b) into the class Bar; it will be implemented in Bar as execute(Foo f) (or without the Foo argument if not needed), and the original class will retain the method as a stub call to the new, moved method.
Push Down/Pull Up -- moving methods/fields up and down in the inheritance hierarchy, with all dependencies maintained.
Extract Interface -- takes one or more of a class' methods and puts them in an interface declaration.
Extract Method -- you select a bit of code, Eclipse wraps it in a method with all dependent variables and exceptions in the declaration, replaces the original code with a method call, and optionally searches for similar patterns elsewhere to replace as method calls. I use this one daily.
Among other favourites are Generate Delegate Methods (ideal for doing GoF "Decocator Pattern" classes), Generate Getter and Setter, Override/Implement Methods, Inline, and several tools to turn expressions into local vars, local vars into fields, and more.
The notion of code completion is extended to encompass code repair: Warning/error markers provide interactive "quick fix" popups suggesting ways to fix/improve your code. Misspelled type name? Eclipse will suggest a list of possible types. Typed an unknown class? Eclipse will suggest to add an import for it. Unused identifier? Eclipse will suggest to remove it safely.
These tools really help, and take the drudgery out of doing time-consuming changes such as renaming a class or method. It allows me to be more spontaneous about code changes -- if I move something I can always move it back, or somewhere else -- and concentrate less on syntax and more on code.
Does CodeWarrior offer any such time-saving tools? To my knowledge the only IDE that comes close to Eclipse is IntelliJ IDEA, a Swing-based IDE which provides many of the same source tools (like intelligent renaming, moving, "quick fix" markers), an even some new ones (Make Method Static, Replace Constructor with Factory Method and others). IDEA also has a few other goodies, like code folding. But it's not free software, and it does not offer Eclipse's terrific plug-in API. And it's Swing.
not unbelievable, super extra, makes WSAD actually usable fast. The WSAD team should first make Websphere run with less than a gig of ram before worrying about application speed. Yep IBM has the worst talent in the business.
Did any of you get a chance to try it out and compare how much memory it uses? One of the annoyances about Java when compared to C is the total memory usage. So when apps like Eclipse written in Java can be compiled and if the memory usage is lower as a result, then that would make Java more attractive. I'm guessing that even a "hello world" will suck up a lot of memory for a Java console app compiled using GCJ because of required runtime library. Just a guess. Yes, memory is cheap but some of us are stuck with company-owned equipment we can't modify or we've already maxed out on upgrades.
Delphi is cross platform. It does not run on very many platforms. There may be a partial Linux port, but it is Wintel-based. Where are the Solaris and AIX versions? The kind of work you do is insignificant enough that the use of java does not have any real effect anyway. Huh? Java is in wide use. Why do you think that is?
Answer...none.
It will always be slower, and thus unusable.
It does not run on very many platforms. There may be a partial Linux port, but it is Wintel-based. Where are the Solaris and AIX versions?
The kind of work you do is insignificant enough that the use of java does not have any real effect anyway.
Huh? Java is in wide use. Why do you think that is?
I was speaking about your 10 line java programs.
The "then" was definitively used in a temporal relation thus it's use is correct.
right on, typical Java fanboy. The factor of assembly to C/C++ is miniscule compared to the bloat of Java. VB runs better.
Compromises must be made sometime however.
Like the compromise your parents made not aborting you in the womb.
Now, you are just a useless toadie.
Eclipse contains a java compiler which you can also compile as a standalone app with with gcj (see http://sources.redhat.com/rhug). The gcj-compiled compiler is almost three times faster than the latest IBM JRE run version.
Give eclipse a chance to ketchup.
I don't understand. You want to give Eclipse a chance to become a fruit-based condiment that Americans put on French (or Freedom) Fries? How long do you anticipate that taking?
Java is still some 40 times faster than Python.
And this is horse shit.
What you meant to say was "for some tasks, java is faster than python, but python is clearly much faster for the vast majority of tasks that the programmer must solve. more importantly, however, python saves programmer time, which is far more expensive and valuable than CPU time."
or something like that.
if i wasn't so lazy today, i'd dig up the link to put you in your place. but you wouldn't believe it, so why bother?
just give me a sec to download them
There's nothing keeping you from writing procedural and object-oriented software in O'Caml.
However, for interpreters the core interpreter loop will never be left even if you go into a virtual function in the method being interpreted. That means that it's possible for cache locality and branch prediction to make interpreters faster than compilers for heavily OO applications with no I/O or kernel calls.
Additionally, Java is faster than C++, as well as not being completely braindead. C++ is dying. C++ is no longer used in industry projects, and is passing into history. C++ jobs are becoming scarce. It is impossible for anybody to understand a C++ compiler perfectly. Lets not get into templates. Java, the faster, mole scalable, bug-free and far more secure solution has devastatingly won the argument at this stage.
Plain old c will live in in systems software, but such software is essentially understood and uninteresting nowadays. Nothing new or exciting is done in systems software, kernels are merely gradually tweaked and patched (and of course endlessly bug fixed for the endless buffer overflows and pointer problems that c, the most insecure language ever, creates).
If you want to get a job, son, the best thing you can do is stop your hippyish gcc ways and download a copy of j2se1.4.2.
What does "respoding" mean?
It means to spode again, as in I went to the store and respoded her arse up and down the aisles, dumbass.
Get your torrent here
Anger problem.
LOL. It does not and you know it. C is near assembly language. Read up on some computer history, and you will see how close to the machine it is. Your ignorance is beautiful.
C++ is dying.
Mainframes are dying.
Suuuure.
And what are you going to say when templates are added to Java asshole.
1. Java - 8355
2. J2EE - 7227
3. Unix - 4173
4. SQL - 3989
5. PHP - 3888
6. Oracle - 3676
7. ASP - 3309
8. Windows - 2940
9. Perl - 2587
10. SQL Server - 1916
11. Basic - 1874
12. VB - 1670
13. HTML - 1317
14. DBA - 1198
15. DB2 - 1021
16. C - 979
17. Mainframe - 874
18. PL/SQL - 790
19. Linux - 781
20. WebSphere - 688
21. C++ - 647
22. Sybase - 645
23. WebLogic - 545
24. Cisco - 478
25. C# - 358
26. Apache - 244
27. JMS - 105
28. Informix - 101
29. Tomcat - 77
30. Delphi - 74
31. MySQL - 60
32.
This is fairly damning of your "C++ is not dying" claims. Your "c is near assembly" claims are also laughable. It can't be near assembly, and reasonably portable. It therefore has to abstract away from machine code fairly significantly. Back in the day, I used to rewrite the c weenies' code in assembly, and laugh when they came back to find their app running (often) 4 or 5x faster.
Learn about the current state of the computing industry, and about C yourself before spouting off.
Oh and by the way, if you were remotely familiar with computer history, you would realise that the trend is towards greater and greater abstraction. The reason the days of C and C++ are drawing to a close are the exact same that the days of assembly were drawing to a close in the late 70's and 80's. The new solutions (C# and Java) are better in every concievable way, and offer far more rapid development with a more secure and bug free product at the end of it.
Wow, for a smart guy you sure can't fucking count:
from monster.com
C++ - 2461
Java - 3951
Overall, the java jobs pay less also.
There are a lot of VB jobs too, so I guess that means that you are not following the industry dickhead.
Dont' you know that no matter how fast it is looking straight into a solar eclipse with unprotected eyes can cause severe damage to your eyesight and possibly even permanent blindness
For goodness sake, if GTK+ doesn't even have the sense to look away, is there hope for Quartz, or even the somewhat bumbling MFC/VB toolkits?!?!?
We'll all be running blind!
The horror, agony, apathy.
Many Thanks,
Luke
The javac compiler is in Java (and can be accessed programatically at runtime on systems where javac is around). So your statement is true for the compiler.
Last I heard java.util.zip was a thin JNI wrapper around the ZLIB library. (They were talking about reimplementing in Java, but I don't know if they ever did.) So jar is mostly C except for a thin Java wrapper.
Of course the JVM itself is written in C. If it were written in Java, it would need another JVM underneath it at the machine interface layer.
I do a lot of compute intensive stuff in Java and I have found gcj performance to be comparable to Sun's and IBM's JIT. That's also what most of the benchmarks on the page you link to show.
In fact, I only see one benchmark where there is a significant difference, and that is probably due to some JIT-centric code in that benchmark that is easily eliminated. There are some optimizations available to a JIT that gcj can't do (e.g., inlining of some methods), and for code written with a JIT in mind, that may make a noticeable difference. But it's easy to detect those places and make such code run fast on gcj.
Another big performance feature of gcj is that it has a fast native code interface, as opposed to Sun's sluggish and cumbersome JNI interface.
In general, JIT compilers should be able to do better than batch compilers and do a lot more optimizations on high-level code (specialization, partial evaluation, etc.). But none of the Java JITs realize that advantage, and overall, something like gcj seems to be a better overall compiler for most real-world use at this point.
It means that when a 5 yr old and a 4 year old are bugging you to finish typing, proofreading is the first thing to go.
In my experience, the performance of gcj-compiled code is roughly comparable to that of Sun's and IBM's JITs.
In principle, a JIT should be able to beat a batch compiler on long-running, compute intensive tasks, but none of the existing Java JITs seem to realize that advantage. Furthermore, for interactive applications like Eclipse, eliminating JIT delays and class loading delays is probably more important than a little bit of difference in performance.
Being used less and less? Surely you jest. Java is a huge sucess and its use continues to grow.
My blog: http://jkratz.dyndns.org/~jason/blog/
Can anyone tell me what the memory usage of apps compiled with GJC is?
The memory usage running an app on the JVM is at least 8MB and I have had apps using up to 100MB.
You can have a JVM that can save JIT output to the executable format for a given platform. Like GCJ :-) Then, after a bootstrap, the JVM can be in fact written in Java.
Just so you all know. A good jit/hotspot compiler can make things quite a bit faster than any static build compiler. This is because at runtime certain optimizations are possible that simply cannot be done at build. These optimizations are typically very aggressive, to that extent that later on in execution it may turn out so that those snippets have to be thrown away and recompiled. And thus they usually target only the hotspots, i.e. portions of code that are being executed inside tight loops, which is usually where compile time savings occur anyway. The speed of the rest of the code is pretty much governed by the programmer anyway along with his choice of algorithms and data structures.
A good example of such snippets would be the inlining of a virtual method, turning a virtual method recursion into a loop along with some unrolling, inlining function pointer call (which is basically the same as virtual method call).
Mind you, ofcourse a hotspot compiler could also be implemented to a C/C++ runtime environments, but I haven't heard of anyone actually taking that path.
(for the record, I'm a C programmer and rarerly write much with java)
1 Earth is warming, 2 It's us, 3 it's royally bad, 4 we need to take action NOW
I've heard from a few people that "gcj has problems with garbage collection." However, I have no idea at all why people think so, or where this rumour started.
If anyone here does know of specific problems with gcj's garbage collector, please let me know or post a bug at http://gcc.gnu.org/bugzilla/.
aph@redhat.com
I rarely need to run EJBs on my phone.
You do know what "j2ee" is, don't you? You also realise it pays out far more than your primitive C++ alternative.
Duh!
////
/////
////
////
////
>>>>
Now, this will go through the vector, and call the appropriate version of do-foo for each time in the vector. The cool thing is that it doesn't matter what the types in the vector are, or how they're related. If they have a do-foo() defined for their class, the runtime will do the right thing automatically. In Java, to get the same effect, you'd have to use check to type of each variable, cast it to the right type, then call do-foo() for each type that could be in the vector.
In Java we have interfaces. The fact is that the code that you propose is not encapsulated . Declaring an array of type the desired interface will achieve the same goal. And it would be encapsulated.
>>>>>
Certainly, its not any more flexible than C++.
You are only looking at the compiler, and are right. But check the runtime for BCEL-like features (capacity to generate bytecodes on the fly at runtime as if they were compiled) and introspection (capacity of finding every attribute and method of a class without knowing its type). I think we don't understand "flexible" the same way.
>>>>
let vec = make(limited(, of: ));
supported on jdk 1.5 to be released by the end of year
>>>>
again, Lisp, Dylan, even C in the case of the SAFEcode project
They don't check on COMPILED code if someone does something nasty. I mean, the goal is to get different permission levels on different classes inside the same executable, something that the OS doesn't allow me to do.
>>>>>
Lots of languages are natively compiled and fully portable at the same time.
You are telling me that you have libraries to connect to different databases, native sockets, multithreading, serial ports and, say, window handling (don't tell me seriously about using Qt, please) that works on sun, hp, win32 and alpha and don't mind if it's little or big endian?
Do you have photos?
Damn, the only reason on the end of the road to use java it's because you have thousands of libraries to get real work done. For those who have to deal with hundreds of functional points it really is worth the pain of lack of performance.
The rest imho is fud.
As long as I've been doing software Moore's law has been a constant hassle. Every year the hardware gets bigger and faster, and we, the poor software developers, have to come up with ever bigger, slower and less efficient ways to do things to use up all those new cycles!
Our diligence has paid off. Since 1980 when a Perq Workstation with a 1 MIPS processor and 4 MB RAM (IIRC) could run a complete high performance window based operating system, to today when a similar capability takes 250 MB RAM and 2 GHz to do the same work, we've managed to coninue to stem the tide of hardware!!
Of course, we can't neglect the code and data space experts, who continue to struggle to fill disks that are as much as 60,000 times as large as those of the early 1980's. What a challenge - but we're meeting it!
From early efforts with program generation systems, 4GL languages and interpreters to today's IDEs, Software Engineering continues to meet the challenge of hardware with new levels of indirection, such as XML and Web Services - a glorious re-creation of the excellent slowness of LISP, newly hobbled by a verbose text-mode protocol that can multiply a simple 2 byte code into as much as 2Kbytes or even more!! Those networks are so hard to fill!
Thus we have managed to generate an order of magnitude more work for workstation, routers and servers worldwide. And the new data storage requirements have ballooned corporate data archives from piddly megabytes to terabytes!
With recent new initiatives such as object oriented programming, 3D UIs, SQL-driven addressbooks and scripting languages we will continue to hack away at the hardware advantage. Only the amazing expertise of the software community could have achieved such incredible results in such a short time. All hail the glorious software revolution, making work for CPUs everywhere!!
It's easier to be a result of the past, but more fun to be a cause of the future! http://www.spacefinancegroup.com/
How about VS.NET Enterprise Architect? It's got additional features like the latest Visio for reverse engineering C# to UML (and back).
The one area that VS.NET lacks is refactoring (although I'm of the camp that one should keep refactoring to a minimum). I'm hoping that this gets addressed by the next release.
There is no longer anything that can be done with computers that is nontrivial and clearly legal. -- Paul Phillips
If I had Mod Points, I'd be hard pressed to choose whether to mod this as +1, Funny or +9, Psychotic
You sir are a twit, you sir are a fool....
Is it something that's come lately or has been around since the dawn of slashdot? I've noticed (and chirp in here if you've noticed too) that it's become fashionable for a few people on slash to go around challenging each other's intellects with name calling in some psuedo geek pissing match.
Judging by the parent posts, both of you seem like reasonably intelligent people, why resort to calling each other names? I mean, instead of starting your posts off with "You're a stinky poo poo head" and then rambling on with your technical points, can't you just cut that first line of name calling out of your posts before you post it? Do your arguments lack the technical merit to stand on their own?
Jeesh, cut with the fucking elitism already.