Slashdot Mirror


GNU Christmas Gift: Free Eclipse

Mark Wielaard writes "Your friendly neighbourhood GNU did it again. A year ago IBM made much noise about placing $40 million of its software tools under a free software license. Technically these tools, called Eclipse, are great for developing (java) software. There was only one catch, it was build on top of the proprietary java platform. This made it useless for the Free Software community. Luckily the GNU project has two projects that come to the rescue. GNU Classpath, core libraries for java, and gcj, the GNU Compiler for Java. We are now able to run Eclipse on a completely free platform! It is not yet complete, but you can already edit, compile and browse CVS with it. And since Eclipse uses GTK+ it also looks very nice. I setup a page with instructions on how to get this working so you can help us make it work even better or just so you can view a couple of nice screenshots."

24 of 250 comments (clear)

  1. Free Software Community by lunartik · · Score: 3, Insightful

    A development tool that is built upon a non-open architecture is "useless" for the free software community? But a sort-of-working substitution remedies the problem?

    Hmm.

    1. Re:Free Software Community by Twirlip+of+the+Mists · · Score: 3, Insightful

      Why must you slander us and belittle us?

      Well, come on. You do bring it on yourselves, don't you? All the high-minded talk of freedom and liberty just reeks of tall poppy syndrome. Even if your political goals weren't wrongheaded and your propaganda methods highly questionable, the "community" in general, and certain members of it in particular, think so much of themselves that being brought down a notch or two from time to time is good for them.

      That said, though, let us not lose sight of the fact that your political goals are wrongheaded and your propaganda methods highly questionable.

      "Politically unacceptable" is a poor substitute for "under a license that does not guarantee freedom from embracing and extending".

      Actually, I think "politically unacceptable" describes the situation perfectly. Here we have a platform that is free for your use, without the sorts of BitKeeper-style restrictions that created such a stink a while back. The platform is ubiquitous and unrestricted, and generally considered to be appropriate for a wide variety of tasks. And yet you (you meaning the "community") refuse to use it for no other reason than that the people who built the platform do not subscribe to your views on intellectual property and source code licensing.

      You may wrap it up in terms of "we want a tool that isn't under anybody's control," but the bottom line is that the concerns of the "community" aren't practical. They're ideological.

      You're smearing reasonable people who don't like Trojan gifts with a very broad brush, and I believe you owe us an apology.

      I am calling it like I see it. I don't think a reasonable person would conclude that Eclipse is "useless for the free software community" simply because it was built with and runs on Java. That is absolutely radical fundamentalism; it is based on the idea that anything that is not ideologically pure is "useless."

      Now I didn't speak personally, and I intended no offense, but I will not be offering any apologies, either.

      --

      I write in my journal
    2. Re:Free Software Community by Twirlip+of+the+Mists · · Score: 3, Insightful

      I don't get it, what is it about freedom you don't like? Again I hear slander without specifics.

      Oh, man. This could take days. But the short answer is that the FSF does not stand for freedom. They stand for strictly limited freedom. They stand for "freedom except." And yet they persist in calling it "free." That's deceptive. But I really have little to say to you on this specific part of the discussion that I haven't already said in this extremely lengthy and, surprisingly, civil thread. If you want to know what I think about the FSF and what they call "freedom," please click over and read what I wrote there.

      The java platform is famously non-free, under the control of Sun rather than standards bodies.

      You're kind of proving my point here, whether you realize it or not. You have called out the fact that Java is defined by a company instead of by a committee as being a sign that it is "non-free." That smacks of the "ideologically impure" thing I mentioned earlier. Because the Java specification is not defined by a committee, the Java platform is impure, so all software that runs on Java is impure. And because Eclipse runs on Java, it is "useless for the free software community." This is, as I said before, an example of radical ideological fundamentalism.

      It's not Sun's views on IP we care about, it's the license under which the gift software is offered.

      Okay, then for the purposes of our conversation I retract what I said about the FSF's disagreements with Sun over IP. Forget I said that.

      What you are trying to do is smear the free software community (who concern themselves with providing free alternatives) with warez kiddiez who have no respect for laws they disagree with.

      Wha? I don't understand how you jumped from what I said to that conclusion. I didn't say a thing about software piracy. If you're going to argue with me-- for I do love a spirited debate-- at least have the courtesy to disagree with things that I actually say, if you please.

      We don't like the license so we won't use it. You are trying very hard to make this seem unreasonable, but it is not.

      What I consider to be unreasonable is the apparent "fruit of a poisoned tree" doctrine that is being applied here. As I said before, Java is considered ideologically unacceptable-- this is a vital distinction; not unacceptable on technological or practical terms, but purely ideological ones-- so all software that runs on Java is also unacceptable.

      It is possible to release software for the Java platform under the GPL. It is possible to build software with Eclipse and then release it under the GPL. So the objection here has absolutely nothing to do with the real world. It's purely ideological, and I consider that to be unreasonable.

      Of course not, you're clearly not reasonable and have no idea what a reasonable person would care about.

      Wow, this is getting better and better.

      It's an attempt to make it sound like anyone who cares about what license their software uses sound like a terrorist.

      Actually, it's an attempt to make it sound like anyone who considers a tool "useless" not because of its license, or because of the license of the platform on which it runs, but because of the specification of the platform on which it runs sound like a radical fundamentalist. Which is precisely what I said. If you jumped from "radical fundamentalist" to "terrorist," then I submit that you may have been watching too much television, and that you might want to sit down calmly, take a stress pill, and think things over.

      Ah, but now you have responded to my post personally, and accused me of 'radical fundamentalism' and an obsession with 'ideological purity', and I have taken it personally.

      Well... okay. Yes. If the statement, "[The fact that] it was build on top of the proprietary Java platform... made it useless for the free software community," accurately describes your opinions, then yes, I am accusing you of radical fundamentalism. I am accusing you of being more concerned with ideology than with software, free or otherwise. Most importantly, I am accusing you of cutting off your own nose to spite your face.

      If this offends you, I am sincerely sorry. I do not mean to attack your character, hurt your feelings, or insult your person. I mean only to indict your ideas in the court of Slashdot public opinion.

      You are coming from the perspective that a little proprietary software is ok.

      Actually, just to make things perfectly clear here, I am coming from the perspective that all proprietary software is okay. I disagree most wholeheartedly with the FSF's most fundamental assumption, which is that proprietary software, and by extension all intellectual property, is a bad thing. Just so there's no confusion about where I stand on the issues, you see.

      But you seem to think that anyone who has a different perspective on the appropriateness of proprietary software is a raving lunatic, and for this I fault you and continue to demand an apology.

      Whether you, sir, are a raving lunatic or not remains to be seen. You may fault me for whatever you like, and you may demand whatever you like. As I said before, no apology will be forthcoming.

      --

      I write in my journal
  2. Not Ready? Its all about the plugins. by Apoptosis66 · · Score: 4, Informative

    I am not sure I understand the "Not Quite Ready" comment. I have been using Eclipse as my main IDE for nearly a year and I love it. Eclipse is just the framework to build the IDE you desire. Eclipse is complete, there are just some pluggins that aren't ready yet, however they are comming along very fast. Just last night I started using the Lomboz J2EE pluggin and so far I have been pretty impressed. http://www.objectlearn.com/ Also, I get all my plugins from: http://eclipse-plugins.2y.net/eclipse/ I might not be up on all the politics of programming, but I know I didn't pay for Eclipse and no one has asked me for anything to use it. So it appears pretty damn free to me. I recommend Eclipse to everyone.

  3. Java on the client-side needs this to compete... by javabandit · · Score: 5, Interesting

    As someone who has written several Swing based applications, I can say that Java sorely needs this kind of a shot in the arm for the client-side to be even remotely feasible.

    Up to this point, Sun has ignored the client-side, and rightly so. Because Microsoft and MFC rules on the client side (on Win32). Sun exploited the server-side breach that Microsoft had ignored.

    But now, Java needs to become a viable alternative to C++ based programming on the client-side. And the only way this is going to happen is for Java to have some kind of a native GUI presence on each platform it runs on. This is where IBM and the SWT libraries come in.

    Currently, the SWT libraries are still immature. The Eclipse platform itself is still immature. But they will get better and better. I predict that the SWT libraries will not only get quite expansive... but include things other than GUI widgets/toolkits.

    If IBM plays their cards right (and so far they have)... I can see them actually introducing more Java extension libraries for other things that Sun did a terrible job on. Collections. Better native threading model. Better I/O model. The list goes on and on.

    Personally, I would have no problem with writing a Java application that only imported IBM extension libraries. As long as they were well-written, and performed well.

    Sun really needs to get on the ball here. The time has come to open-source Java. Let the developers do with the language what needs to be done to bring it to the next level.

    Otherwise... companies like IBM are going to do it anyways. Just using extension libraries. If Microsoft was smart, they'd have done five years ago what IBM is doing now. Microsoft would own Java on the client-side if they would have played it right.

  4. Re:Why should I use Eclipse instead of Emacs + JDE by Chainsaw · · Score: 5, Funny

    Well, why do you use Emacs instead of vi? Or ed? Or writing to disk using very, very small magnets?

    --
    War is one of the most horrible things a human can be exposed to. And one of the worlds largest industries.
  5. Just use Anjuta by DuckWing · · Score: 4, Interesting

    Why is there a big deal about this, other than the promise by IBM and making good that promise? Anjuta DevStudio, which is one of the best GUI IDE's on Linux IMHO, supports Java. I personally havean't gotten into Java, so I could care less about this, but Anjuta is fully GPL'd already.

    --
    -- DuckWing
  6. Waste of Effort by kindofblue · · Score: 5, Interesting
    I think Eclipse is pretty damn good. If it could be sped up by precompiling critical parts using GCJ, and integrating with any good Java VM, then that would be great. However, reimplementing the entire (Java) API using "Free" code seems like an extraordinary waste of effort. Realistically, there would always be some mismatch between the official API and the free version, meaning that the Java API would be forked in a subtle way. That benefits Microsoft immensely.

    I think that the Java libraries will be very difficult to control fully by Sun, because they do not have IBM and Oracle to push around. IBM will absolutely not be backed into a corner by one of their main competitors in hardware, Sun. Because of that, I'm not worried about the Java APIs turning into a controlled arena, as Microsoft has done with Windows.

    Basically, I think the effort of the Open Source community, of those that like Java, would be much pretty spent on making GCJ integrate seemlessly with a compliant Java VM using JNI. GCJ could used to make a just-of-time optimizer. With C# and dotNet, I think there's an ahead-of-time compiler instead of a just-in-time compiler that can optimize the byte code for the target machine. Using GCJ/GCC, one could get that sort of performance boost, almost for free, if it were plugged into a compliant Java VM, meaning that it could integrate with DLL/DSOs using the Java Native Interface.

    Anyway, I, for one, would probably not waste my time using a slightly out-of-date API, on a slightly behind-the-curve VM or compiler. (BTW, I'm a heavy user of emacs, perl, mozilla, etc.) The java API, language and VM still has a LOT of room for improvement. I hope developers would rather innovate and improve the java standard than to fork off a clone.

    1. Re:Waste of Effort by Anonymous Coward · · Score: 4, Interesting

      But they CAN'T innovate and improve on Java because Sun holds the ropes. I've been reading in Infoworld that Sun is looking to make more money from Java .. somehow .. and that worries me a little.

      I'd like to see a Free clone of Java, and then a community develop around the clone to CHANGE it into a better language. For instance, I'd like to see templates ("generics") added to java. I'd like to see type-safe enums. I'd like to see some "syntactic sugar" to make programs easier to write and read (hello, iterators). I'd like to see a GNU/Java implementation that has all this stuff and more, but is still backwards compatible with Sun/Java.

      I'd like to see native-code only Java. I'd like to see GTK+ bindings for Java. I'd like to see all the old library cruft cleared out of Java. Heck, I'd like to see Java pre-installed on Red Hat, without coming on a separate CD with a separate license and a crappy RPM that was made by Sun. I wish it was available on FreeBSD sooner. I wish a lot of stuff that's only possible or easy with third-party implementations.

    2. Re:Waste of Effort by kindofblue · · Score: 3, Interesting
      I'd like to see a lot of those things exactly. Generics are coming in the next java version, I think 1.5. It started out as a research project apart from Sun, named Pizza or maybe it was GJ (Generic Java), and then got folded in. Sun definately needs to relinquish more control to its community process.

      Many of the features you describe could still be done by compiling a Java++ superset language into the same bytecode or by translating to java code, like AT&T's cfront did for the original C++. The native-only stuff could be done directly on the byte code, or using something like GCJ to optimize java/java++ to machine code. Way back in java 1.0, SGI had a tool called javat which did almost that. It translated bytecode into machine code, but was not good at optimizing it. That's where GCJ/GCC would be very handy, since there's a full optimizing compiler in it. But my point is that these examples could still be done with the existing Java VM architecture. Language features, alternative syntaxes, and optimizers don't require reimplementing everything from scratch. IBM's jikes compiler is a very fast java compiler (written in C/C++) that adheres strictly to the Sun specifications, but it is buggy as hell. Reimplementing these things is not trivial.

      Anyway, I agree that rapid innovation is definately easiest when all the source is available. Mozilla, Linux, and emacs (in the 90's) are great examples of that. Rapid innovation is great for applications because the end-users can benefit immediately, and if something changes, then they can change their habits.

      However, for languages and APIs, standardization is very important. Many things depend on them: Documentation, applications, example code, tutorials, third-party books, training seminars, university courses, etc. which are all in the realm of developers. Developers suffer when source trees, APIs, or software practices become needlessly fractured. HTML and the Netscape/Internet Explorer browser wars is a great example of how web developers were saddled with two camps of HTML and zillions of incompatible dialects and implementations. We are still burdened by incompatibilities from those rapid innovation cycles.

      My ideal scenario would be that I could take JAR files from GNU, Apache, Borland, Oracle, IBM, etc. and mix them together and get an optimized precompiled (maybe native-only) executable. But some standardization mechanism is needed so they can all talk to each other, (unlike the horrible linking incompatibilities between all C++ compilers). It doesn't have to be Sun; maybe it could be Sun/IBM/ECMA/ANSI. But it will likely be some company, since non-profit standards bodies usually move very slowly. Linux, for instance, has been standardized for the corporate world by RedHat primarily, not the UnitedLinux group or even Linus (who's focus is the kernel).

      The important consideration is that there is a limited set of developer resources, even with thousands of open-source community eyeballs. Microsoft is the prime competitor to java, and Sun, IBM, Apple, etc are not. They are closer to being corporate resources and allies. As long as they remain good supporters of a unified java and don't create obstacles to the future use of these APIs/VMs, then I don't see why we shouldn't use them as resources, and thereby build upon their work instead of duplicating it.

  7. Re:Why should I use Eclipse instead of Emacs + JDE by V.P. · · Score: 5, Informative
    That was my reaction to IDEs in general, and for Java I was using Emacs+JDE for years.

    Eclipse is an IDE without all the crap you usually associate with an IDE. JDE isn't bad, but it's nothing like Eclipse. Eclipse's debugging support in particular is way better than JDEs (which took me some hours to configure properly). Not to mention that Eclipse let's you do really neat things, like stop the debugger right before an exception was thrown, fix the bug, and continue with the debugging as if nothing had happened!

  8. Re:I'm glad... by MillionthMonkey · · Score: 3, Informative

    ...I think that Borland's Jbuilder IDE it's the best so far. It's slower than eclipse, but it offers much more features. And ... i'm so used to it :) ....

    Please tell me you don't use JBuilder's Designer. We had a developer who liked to use it a lot. He stopped a year and a half ago, and we're still mopping up the damage! Everything looks like

    flowLayout1 = new FlowLayout();
    label2 = new Label();
    panel3.add(button8);
    panel6.add(panel4);
    label2.setText("Welcome!");
    panel7.setLayout(borderLayout6);

    and it goes on and on like this for a couple hundred lines! With not a single local variable in sight- JBuilder declares them all as instance fields! Oy! Unless you keep these window classes tightly segregated from the manually edited code, and ONLY touch them with the Designer, they become unmaintainable monstrosities. Adding a single button or textfield is inordinately painful. As for changing the layout- you might as well do a rewrite.

    I've become good at deobfuscating JBuilder's crap. First remove the 30 BorderLayout fields, FlowLayout fields, etc. Then gradually rename the "panel8", "button3", to sensible names, and remove redundant ones as you find them. Then get some graph paper out, and go slowly through the jbInit() method until you see what's going on. This will let you get rid of 90% of the instance fields in the class.

    Layout code is tedious, but there's no excuse for not doing it manually unless you're not worried about maintainability. In fact, one thing I like about IntelliJ IDEA is the lack of a GUI designer.

  9. Useless to RMS, maybe by Ghazgkull · · Score: 5, Insightful
    There was only one catch, it was build on top of the proprietary java platform. This made it useless for the Free Software community.


    If you define the "Free Software community" as the zealotous 5% of free software users who refuse to use software that hasn't been blessed by RMS, you're right.

    For the rest of us, Eclipse has been useful (and free and open source) for over a year.
    1. Re:Useless to RMS, maybe by cant_get_a_good_nick · · Score: 4, Insightful

      It is incredible that you can speak of enjoying free software and curse RMS in the same breath.

      This statement is heresy ONLY if you believe Free Software and RMS are synonymous. I believe they are not. Free Software existed well before RMS, and will exist well after he is gone. He only "created" Free Software if you accept his conceit that Free Software is only software that follows his definitions of Free. I do not. He has contributed a lot to this world, but didn't invent the world. Many people don't realize that The Cathedral and the Bazaar wasn't necessarily contrasting the development styles of commercial software vs. free software, but different styles of development within Free Software itself, and the RMS driven gcc was the example of the "closed" Cathedral. Because of the lack of innovation in gcc, especially around the time ANSI C++ came out and it needed large changes, folks forked gcc into egcs, a more "bazaar" style development model, that eventually became the offical gcc. Or are you saying Eric Raymond has nothing to say on the topic of Free Software because he differs with RMS?

      Or if this was a troll, nevermind.

    2. Re:Useless to RMS, maybe by Gumshoe · · Score: 3, Insightful

      Do you not agree that the situation we are presented with today (completely free Java platform) is better than the situation we were saddled with yesterday (almost free Java platform)? Do you think this situation would have come about if RMS et al, weren't so "zealotous"?

  10. Re:Keep the zealotry to yourself by the+eric+conspiracy · · Score: 5, Informative

    People authoritively claim that Microsoft will use patents to kill these efforts if they become competitive, but there is no evidence to support this paranoia, and in-fact Microsoft does not have a histroy of abusing patents in this manner

    Incorrect in every regard.

    Microsoft has already used patents to attack open source projects, and has also used patent licenses to attack the GPL. Microsoft's highest executives have also stated publically that they intend to use patents against certain open source projects.

    Examples

    - no translation of ASF, WMA and WMV files to any other format.
    - patent licenses granted only to non-GPL software
    CIFS implementations
    - royalty fees on file sharing extensions to SMB in Win2K and WinXP
    - Nasty letters to certain Linux kernel developers working on NTFS support.

    The Halloween documents also mention the possibility that Microsoft may use Patents to attack OS endeavors.

    We also have comments from Mr. Ballmer regarding .Net:

    Responding to questions about the opening-up of the .NET framework, Ballmer announced that there would certainly be a "Common Language Runtime Implementation" for Unix, but then explained that this development would be limited to a subset, which was "intended only for academic use". Ballmer rejected speculations about support for free .NET implementationens such as Mono: "We have invested so many millions in .NET, we have so many patents on .NET, which we want to cultivate."

    And we also have this:

    Asked by CollabNet CTO Brian Behlendorf whether Microsoft will enforce its patents against open source projects, Mundie replied, "Yes, absolutely." An audience member pointed out that many open source projects aren't funded and so can't afford legal representation to rival Microsoft's. "Oh well," said Mundie. "Get your money, and let's go to court."

    Any statement that Microsoft has not and is not likely to enforce patents in these areas is just not backed up by the history, or by public statements by MS senior executives.

  11. Give me a break by leereyno · · Score: 4, Interesting

    "There was only one catch, it was build on top of the proprietary java platform. This made it useless for the Free Software community."

    There is plenty of java code that has been released under the GPL and BSD licenses. The only way that java would be useless to someone is if they turned their nose up at it. Turning one's nose up at something for non-technical reasons is usually a bad idea.

    Lee

    --
    Muslim community leaders warn of backlash from tomorrow morning's terrorist attack.
  12. The point by AveryRegier · · Score: 5, Insightful

    I've been following both of these projects for years.

    The point that so many have missed is that this shows how close the GNU implementations are to be being a complete JDK replacement. Eclipse is a very complex beast that uses nearly all of the Java APIs. This achievement shows the quality of the years of work that has gone into these free projects. All of this work is now finally ready to pay off.

    Congratulations to the whole ClassPath and GCJ teams!

    -Avery Regier

  13. Re:SWT binaries? by MillionthMonkey · · Score: 5, Informative

    Could one, for instance, now compile a Java program using the SWT library to a native binary using GCJ, so it could be run without using a JVM?

    Yes.

    SWT takes a middle ground between the extremes of AWT and Swing, and abandons a sacred cow of Sun's- the idea that the same binary must run on all platforms without any modifications. This attitude has really been an albatross around Java's neck and is the reason everyone thinks that Java applications have to be cheesy- because Sun demands that they must be equally cheesy everywhere!

    AWT takes the approach that ALL widgets are drawn by the native layer. This isn't a bad idea, except that if no native widget is available (like a slider, or tree), AWT refuses to improvise one at the Java level. This is why there are no sliders or trees in AWT, even on platforms like Windows where native widgets for both are present, because there's some platform out there somewhere that doesn't have them. Maybe AIX or something, who knows. AWT is strictly lowest-common-denominator and that's why everyone hates it.

    People bitched and moaned. So Sun went straight to the opposite extreme with Swing, which refuses to even consider the native widgets. Instead, it uses Java level methods to draw pictures of them to fool you. This means that Swing can offer you a "pluggable look and feel", so you can have Motif buttons on Windows, or "Metal" buttons on the Mac! Except nobody cares. Microsoft promptly kicked Swing in the nuts by introducing skins with XP, so it becomes obvious what is really Windows and what is pretending to look like Windows but can't keep up. And Swing suffers greatly from the second system effect- it's overengineered as hell. A Hello World in Swing gobbles up 20 MB of overhead- mostly classes loading and initializing themselves. In fact, Swing is why AWT is still alive. AWT sucks, but you can run a program that lasts for more than a couple minutes with it. Writing stable applications with Swing is a real art. (It is in AWT too, but only because Sun has pretty much left AWT flapping in the wind with minimal improvements, maintenance, or bug fixes. Since Swing came along, AWT has been treated like a red-headed stepchild by Sun.)

    SWT is much more like AWT than Swing, except that it takes a practical middle ground- something Sun doesn't seem capable of doing at all! It offers you a nice set of native widgets. If a slider or a tree isn't available on some platform, they draw a picture of one for you. This might make sliders and trees look funny on platforms that lack sliders and trees, but you would expect things to look funny on those platforms. People using Windows (i.e. most of them) aren't bothered by any of this.

    This sacrifices binary compatibility. Each platform has its own version of the SWT library. For example, there is a Windows specific swt.jar and a swt.dll that goes with it, and there is a Solaris version of swt.jar and a native swt.so library that it uses. Even though the libraries are implemented completely differently, the public interfaces are the same. So if you develop a program against the Windows version of the SWT library, you won't have any problem compiling against the Linux version. (Although I've heard that SWT blows on Linux, but that was a while ago and I don't know what the current state is.)

    SWT doesn't abstract much away from you, unlike AWT, where you are separated from the low level GUI details by a leaky abstraction. In SWT you have to write the frigging event loop yourself! (Which is not a big deal- it's a while loop, usually two lines.) There are a few other gotchas, and you absolutely have to test a SWT program on all platforms you're releasing for, but in practical terms the same was always true for AWT because of the leakiness of its abstraction. SWT at least doesn't pretend that you don't have to worry about this stuff.

    This means you have to compile and test a program three times before releasing it, once for Windows, once for Linux, once for Mac. This violates Sun's sacred cow of binary compatibility. But when you're releasing a Java application, you're going to make separate installers for each platform anyway, because you have to bundle a JVM for everybody. So it's not really a big deal, unless you're writing an applet- and applets went the way of the dodo long ago in no small part because of AWT and Swing!

    With SWT, you can make really nice, professional looking programs. The layer between you and the OS is very thin (JNI). If your program looks silly or stupid, it's YOUR fault. When the user changes the skin in XP, your SWT programs will pick up the change right away. In fact, it isn't even obvious that you're not using C! You can write your stuff in Java and actually get away with it! So that's why I think SWT is the future (if there is any future left anymore) of Java on the client, and why I will be junking AWT/Swing completely when starting new projects.

    For more info see the SWT FAQ. There is some GCJ and SWT info available here.

  14. I disagree in many respects by Stu+Charlton · · Score: 4, Insightful

    I've written quite a few Swing & server-side applications myself.

    "Microsoft and MFC rules on the client side (on Win32)".

    MFC is dead, long live .NET. And Visual Basic rules on the client Win32 side, and has for quite some time.

    "But now, Java needs to become a viable alternative to C++ based programming on the client-side."

    Absolutely not. Java's only main competitor for Win32 client-side supremacy is VB.NET and C#.NET. C++/MFC is a dead-end.

    On UNIX, I would suggest it's a toss-up between C++/Qt and C/GTK, and IMHO I think Java's more productive than either (though pre-1.4 X-windows Swing performance was unacceptable).

    Sadly, this doesn't seem to be a battle that Java will win on Win32, even with SWT, for a couple of reasons. Microsoft has the industry's talent in developing high-performance Win32 GUI framewords, which will come out for .NET first. WinForms.NET is effectively the next iteration of what was out in Visual J++ 6.0's WFC libraries.

    They also have the tools support with Visual Studio. The Java world currently has only *ONE* usable GUI building tool -- JBuilder. And that's not saying much. Eclipse won't have one for some time. The second major problem with Swing (besides performance) was this lack of tools support. I don't forsee a groundswell of tools support for SWT from multiple vendors.

    Thirdly, there isn't a whole lot of impetus behind client-side "thick" GUIs in the industry. I don't foresee IBM throwing lots of money at making SWT general-use... the open source community will probably assist in this area, but I'm somewhat skeptical about how much adoption this will generate.

    On the bright side, I'm not sure it really "matters". Windows peeps will write stuff with VB like they've always done, the C++'ers will switch to C# (they've really not much choice -- I worked at an MS shop as the Java junkie for 2 years, most C++/Windows programmers there took what MS has given them... there's a lot of shock and dismay when Borland/OWL is on one's resume). The 2nd most widely used GUI framework family will be (gasp) Carbon/Cocoa on Mac OS X. ANd rounding out the list, *nix peeps will continue head-butting between Qt and GTK+ (both of which are still gawdawfully ugly IMHO, quite apparent actually if you run a GTK+ app side-by-side with a Mac OS X application. But I digress).

    "I can see them actually introducing more Java extension libraries for other things that Sun did a terrible job on. Collections. Better native threading model. Better I/O model. The list goes on and on."

    Whoa, whoa! I disagree with each one of these. We are talking about J2SE 1.4, are we not? I'm quite happy with the collections framework (and I compare this to both stdc++ and the Smalltalk collections library), the java.nio.* package is very sophisticated, and IMHO the threading model is a matter of taste, not stemming from any particular technical disadvantage.

    --
    -Stu
  15. How Eclipse/SWT saved the GCJ project by Anonymous Coward · · Score: 4, Insightful

    The GNU folks had no hope of recreating a cleanroom AWT and Swing - it was just too bloody big and complicated. It would have taken at least 4 years to create a cleanroom Swing. Then along comes Eclipse/SWT which did all the hard bits for them in C. The result - a portable and very fast Java GUI. Now folks have a very good reason to work on GCJ because they can finally see some concrete results. Success breeds further success.
    Compiling your application to a single binary (or .exe if you will) is a HUGE advantage for distributing applications. That 20 meg JRE is a complete pain in the butt for a client to download. It's much better to simply run a 5 megabyte GCJ-compiled application.
    Java doesn't suck. Java's GUIs need not be slow. It was Swing that sucked. Finally people realize where to lay blame.
    Sun - get rid of Swing once and for all! Swing is a poorly designed GUI tookit and a complete embarassment to Java.

  16. Re:Now take Eclipse, please! by MillionthMonkey · · Score: 3, Insightful

    SWT seems like a cool idea, but with its close coupling to Windows (Windows is the farthest along -- the other bindings seem to be "under construction"), how is this different than (gasp, choke, gag) J++?

    Oh come on! At least SWT bindings for Linux and Solaris exist, they can exist in the first place, and you can assist in their development. How long do you think you would have to wait for Microsoft to release Linux and Solaris versions of the Windows Foundation Classes?

  17. SWT vs AWT/Swing by Latent+Heat · · Score: 3, Interesting
    Your mention of the Linux and Solaris SWT bindings as separate bindings raises interesting questions about Java and the degree of Java Political Correctness.

    AWT/Swing doesn't have or need bindings because 1) they are 100% Java or 2) to the extent that they are not 100% Java and need to JNI down to something, that something is distributed with the Java VM that appears on each machine, so you don't need to distribute any platform specific AWT/Swing bindings with your app.

    SWT needs separate bindings for each target platform -- it becomes like wxWindows or Qt in that regard. If you want to distribute an SWT app, you need to distribute those bindings, or tell your users how to install the right binding on their machine. But then you are into a bindings model rather than a true "write once, run everywhere" model.

    My remark about J++ may not be completely off the mark. To the extent that C# is in reality J++, and that WFC was transformed to System.Windows.Forms, and to the extent the Mono is going down the bindings road to port System.Windows.Forms (to answer your question, 2002 - 1997 = 5 years to get Linux and Solaris versions of WFC), and to the extent that Miguel gets lambasted for doing what he is doing, why should Eclipse/SWT get a free pass for doing a similar thing with Java?

  18. .NET in a nutshell by Stu+Charlton · · Score: 4, Informative

    .NET is one of many things, depending who you talk to in Microsoft's marketing dept. First I'll define that. Forgive me if it's review.

    Here's the things that it isn't (in reality):
    - A new server platform (MIcrosoft marketed it as such, even though there really isn't anything new in their Windows 2000 lines of servers yet).
    - A some new magic technology (i.e. the marketing idea that MS Passport became Passport.NET and thus was embued with a +6 long-sword)

    Here's what it is:
    - The common type system, language spec, and language interface. (CTS, CLS, and CLI). It's a way of getting several languages to interoperate through a virtual machine.

    - The Common Language Runtime (CLR) for Win32. This is the Virtual Machine. It's as fast as Java 1.4 in some ways, slower in some ways, and over 2x faster at certain operations like object creation. Ya gatta hand it to Microsoft's x86 team, they know their stuff.

    - The following languages are released by Microsoft for .NET: C#, VB.NET, C++.NET, and JScript.NET. C# is first among equals, but VB.NET can do anything C# can do, again because the CTS/CLS is "the language". .NET just gives you a syntactical skin on top of this abstract language.

    - The Base Class Libraries (BCL), ASP.NET, COM+ (aka Managed Components), and ADO.NET are included.

    - The ECMA standards body has been submitted the CLI, CTS, CLS, BCL, and C#. Mainly for show, but maybe something good may come from Miguel et al.

    What's .NET good at?

    - It's a much better way for binary module interoperability than COM was. Viewed this way, .NET could be seen as the next step in evolving binary interop. I.e. in DOS, it was TSR's and interrupts, in Win 3.1/*nix it was DLL's and pointer-tables, in Win95+/Gnome/KDE it was COM or CORBA components, and in .NET, interop is at the CLASS level. They've basically learned the Java/JAR model of interoperability, then abstracted it to multi-languages (they just call JAR files "assemblies")

    The language-interop issue at first glance seems like a red herring feature, but in fact it's rather important from a programmer's sociological perspective. VB and C++ programmers are naturally opposed to each other in philosophy - their means and ends do not peacefully coexist. .NET makes all languages equal. This was painfully NOT TRUE in COM programming! Almost all of the plumbing underneath COM was to support Visual Basic's interoperability with C/C++ components. .NET levels the playing field here, and people can't pick on VB anymore (other than its cheesy syntax). Anyone can throw an exception in C# and catch it in VB, or define a class in C++ and inherit from it in C#. And debug across all these languages in a single session, if need be. Quite liberating for system architects dealing with a large, multi-team project with reusable components and potentially different skill-sets (hence different languages).

    Things you can do with .NET DLL's that are better than traditional Win32 COM DLL's:
    - The Windows Registry is NO LONGER NEEDED. Nothing in .NET uses it, sing the praises!
    - Easy and Flexible Side by side versioning. An app that links against a version stays with that version unless updated or a sysadmin coerces it to use a newer DLL version.
    - No filename conflicts (i.e. no 2 vendors with MYSILLYLIBRARY.DLL overwriting each other -- each DLL has a public key stamp)

    Other things... Making web services in .NET is CHILD'S PLAY compared to some other platforms. Especially with Visual Studio. They've really made distributed interoperability easy -- though of course none of this will scale or be bulletproof without real engineering work, but that's never been Microsoft's game -- let J2EE vendors do the dirty guinea pig work, they'll copy it into Windows/IIS eventually.

    So -- you see, .NET really is about making Windows developer's lives A LOT EASIER. Which really was all that Visual J++ 6.0 was about before they decided to "break" features for political reasons.
    The jury's still out as to whether .NET is appropriate as a new standard for dynamic languages like Smalltalk, Lisp, Haskell, ML, etc.

    I say it's more about "syntax skin" than "flexibility". Certainly you can write Lisp onto .NET but you have to contort it into classes & methods if you want to interoperate with any other .NET language... this is what the C++ people have to do too! (i.e. no more templates, multiple inheritance, at least until .NET 2.0 :) .NET isn't the second coming, though many Missy-followers think it is because their intranet is locked to http://msdn.microsoft.com and really don't have a lot of exposure to the alternatives out there (i.e. J2EE or perhaps PHP, Python, Ruby, etc.)

    --
    -Stu