Red Hat Joins Open Source Java Project 121
narramissic writes "Red Hat has signed on to Sun's OpenJDK project and agreed to coordinate its own Java development efforts for Linux with the project. Red Hat will align the work it has done on IcedTea (its own implementation of some parts of the Java SE JDK) with OpenJDK. As part of its participation in OpenJDK, Red Hat will eventually create a compatible OpenJDK implementation for its Enterprise Linux distribution and will also use OpenJDK to create a runtime for its JBoss Enterprise Middleware that is optimized for a Linux environment."
mono (Score:2, Funny)
Re: (Score:1)
Re: (Score:2, Insightful)
I dunno. I chuckled. Mods, make your own decision.
Re: (Score:2)
It's a Java Virtual Machine implemented on top of .NET.
The author was using GNU Classpath for the class libraries but has recently been integrating the OpenJDK ones.
Why? To embed Java functionality without a messy JNI layer.
Will anything change for end users? (Score:3, Interesting)
Will the OpenJDK mean another runtime? As in Blackdown, Sun, Open?
Re:Will anything change for end users? (Score:4, Informative)
Re: (Score:2)
Re: (Score:3, Informative)
Re: (Score:2)
It contained all of the JFC that was written in Java, the idea being that this was the stuff to look at for best practices in Java coding. The native code was released under the SCSL (Sun Community Source Code License) which is what kick started the Blackdown project and ultimately brought decent Java support to Linux. The native code stuff was largely uninteresting to the average Java coder so I can understand why it wasn't shipped as part of the JDK.
Re: (Score:3, Insightful)
Only a few issues makes it harder to run all on the latest SUN JRE, and none of them are considered good programming practice. I suggest that you take that back to the app vendors and tell them to get it right and working on the latest released Java (1.6).
The major problem I have recognized is actually related more to the centrally distribution of
Re:Will anything change for end users? (Score:4, Insightful)
In Java I can get by with A, B and C each running only on JDK 1.2, 1.4 and 1.6 respectively, but I have to call upon the user, working with the host OS, to deal with any confusion that arises. Now, multiply that by any libraries you use that aren't part of the standard java distribution, and things start to get really interesting.
In part the problem of Java classpaths is one of an embarrassment of riches. There are so many powerful frameworks and amazingly useful little libraries that are out there, free for the taking. However, once you open that Pandora's box, it isn't simply a matter of write once, run everywhere; you have to deal wit the dependency issues that come out of that box. It can be done, and it's not really all that difficult, it's just one of those craft things that some people seem to have figured out how to do and others seem to leave as an afterthought after all the fun stuff has been finished.
The embarrassment of riches also applies to the biggest pitfall in Java development: making bad framework choices, which you can do in multiples at the same time on any project. Leaving aside the case where you have a bad framework (the early EJB stuff -- ugh), or where you have made a bad mistake in requirements analysis, there are so many frameworks that are wonderful for one set of requirements and dreadful overkill for others. Working with a set less than optimally chosen frameworks sucks the joy out of a project, as you set aside the pleasure of solving the client's problem for the tedious drudgery of gluing together mismatched bits of architecture.
Re: (Score:1)
Re: (Score:2)
Re: (Score:2)
Anyway, there are different versions of different runtimes and not all apps work with all of these variations, and this sometimes makes me want to throw them all out.
Re: (Score:2)
The answer is not to ship a JRE with your application if it's likely that the user already has one. Alternatively, just ship the most recent JRE, as backwards compatability is pretty darn good with Java and well written code should just run irrespective of whether it was written for 1.2 through 1.6. An example of badly written code is anything that uses the "hidden" sun.com classes, although I have used them myself for signal support.
Re: (Score:2)
That sort of abuse of the system default settings is another reason I detest the Sun installers.
Re: (Score:1)
Re: (Score:3, Informative)
parallel universe (Score:3, Insightful)
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
You can work around this with wrappers, but the Sun installation practices make the whole deal pretty painful to deal with
Re: (Score:2)
At least on my linux distro, it's integrated with the standard packaging system and, for first-timers, has an installation guide complete with screenshots [java.net].
Since it's now being released under the GPL, no doubt the dialog box asking one to agree to a license will disappear.
Re: (Score:1, Interesting)
Fairly quick, simple to develop in, stacks of libraries, popular.
Not to mention it's great for creating slow, unresponsive, hideously ugly GUI's. What's not to love about that?!
Seriously, though, Java rocks, but Swing needs to die. At the very least it need to do a wxWidgets and actually look and feel native. The "Native" L&F in Java 6 is much better than Java 5, but it's still freaking ugly and stands out horribly. Even after all of these years and the increases in processor speed an memory, Swing apps still feel very unresponsive. I'm not saying SWT is the an
Re:parallel universe (Score:5, Informative)
If Swing developers remember to move intensive operations off the Event thread and into a background thread, then Swing app's are really nice and responsive. It's not that difficult, but for some reason most developers are either unable to, or unwilling to do this simple task.
Believe me, I've seen the source of plenty of Swing app's that have been written with everything in the Event thread and the developer (one of whom I had employed at that time) refused to do this because they couldn't be bothered.
As for the look and feel, it's getting better but it still has a long way to go.
Re: (Score:2)
Sorry, but NetBeans has convinced me that even Sun selected specialist experts can't write a responsive GUI in Java. The reason why may be debateable, the fact is observable.
Also, I've heard lots of complaints about the responsiveness of OpenOffice. I'm presuming that these are from people who are using versions that aren't compiled with gcj...but if that's what makes the difference, then it's Java rather than Swing that's the problem. (N.B.: This *IS* a presumption. I've noticed that Ope
Re: (Score:2)
>
> Sorry, but NetBeans has convinced me that even Sun selected specialist experts can't write a responsive GUI in Java. The reason why may be debateable, the fact is observable.
I agree with you. I actually use NetBeans all the time, and it's one of the things that's annoyed me the most that it becomes unresponsive, like during a refactor. Why the hell that's running in the EDT I don't know.
This does boil down to what I originally said about a lot of developers (and in this case Sun'
Re: (Score:1)
OpenOffice.org is primarily C++. As I understand it, a few parts of the database layer use Java, but most of the source code is and always has been C++.
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
NetBeans wasn't written by Sun, they bought out the original developers, by which time it was already a clusterfuck. There's an article by Gosling (can't find the link at the moment, but that's beside the point) where he describes it as a good example of how not to write a Swing app. The trouble is that people see the Reflection API and don't think how inefficient it can be. This is largely Sun's own fault for emphasising the use of Reflection when they started pushing the whole Bean concept.
Re: (Score:2)
If Swing developers remember to move intensive operations off the Event thread and into a background thread, then Swing app's are really nice and responsive. It's not that difficult, but for some reason most developers are either unable to, or unwilling to do this simple task.
Doing trivial stuff on another thread is easy but its a pain in the ass when you need to access a class's members or methods from within an Anonymous inner class. What Java needs is closures, then there wouldn't be any excuse for not using a new thread. I started to program Swing the right way for a while but I'm finding myself doing more and more on the EDT just because anonymous inner classes are a pain.
Re: (Score:2)
Simply don't use anonymous inner classes. They're the kind of stuff (like the Reflection API) that appeals too much to the former Perl programmer in us all. They may seem to be an elegant feature, but they're more of a hack that's been made to popular by the frequency of their use in example code.
Re: (Score:3, Informative)
I wasn't blaming swing users, but from past experience most don't follow the Swing event model, even when it's documented well. Virtually all are creating swing objects outside of the Event thread (EDT).
> I can understand that for very large operations but if I have to create a thread for every event driven operation, I am done for.
No is did not say for every operation, I sa
Re: (Score:2)
> Now they say you're only allowed to do Swing-related work within the event thread.
That's because Swing is not a thread safe API. The EDT is responsible for executing any method that modifies a component state, including it's constructor.
I know that many tutorials (even some of Sun's older ones) show this, but if you check some of the more recent tutorials, they will show that even main() should create Swing compone
Re: (Score:2)
Which is the same way they do it in every other framework.
Kindof. In Swing all of a GUI runs through the same event loop, so while something is processing an event all parts of the GUI are frozen. In other toolkits a lot of basic functions like redrawing are handled by the OS or by a separate thread that manages low-level gui 'controls'. In Swing you can have for instance a drop down list with tables as the entries instead of names. But since the GUI is are so flexible nothing can be done really while other events are being processed.
Also, some toolkits allow
Re: (Score:3, Interesting)
This is unfortunately true of all of Java. At one end it tried to provide a low level virtual "machine" and the framework accordingly, and at the same time pretends to be a business class, high level framework. Likewise, the language i
Re: (Score:2)
In other toolkits a lot of basic functions like redrawing are handled by the OS or by a separate thread that manages low-level gui 'controls'
What other toolkits would that be? Both Win32 and QT have the same basic problem, that you MUST recieve events in the gui thread, and that the gui thread is the only one that draw. So if you recieve an event end do a
while(true) { } neither win32 or qt will redraw your window.
The basic problem is that neither windows gui(win32) nor X11 are thread safe, and that they use the same thread to draw and handle events.
Re:parallel universe (Score:5, Informative)
And there are plenty of nice Java apps and environments on Linux -- Eclipse is one of the big ones, obviously. The bottom line is that gcj/gij gave Java on Linux a bad name because standard Java apps and programming examples never have worked on it right. Install Sun's JRE/JDK or Blackdown, and you'll find that Java works great on Linux.
Re: (Score:2)
Re: (Score:1)
I imagine with Java going Open Source, the need for Blackdown will end.
Re: (Score:1)
Re: (Score:1)
Red Hat wanted an open source Java stack that they had some control over, so that they could do development, bug fixes etc. Neither Sun's JDK or Blackdown were open source, so they heavily invested in gcj and classpath, porting Openoffice to use both
Re: (Score:2)
Quite an amazing feat since Java didn't come out until 1995. When I first started working with Java (1996) there was no official Sun Java under Linux, there was a port from BlackDown [blackdown.org] (their web site seems to have gone AWOL recently).
I can't remember exactly when Sun added Linux as an officially supported platform, however I know it wasn't from the get go. As a matter of fact, the number one bug in
Re: (Score:2)
Assuming you are using a x86, then yes, Java is available for you on Linux. Don't try to be cute using 64 bits, if you do so you'll start to see the limitations.
Also, the Linux jre has a different set of bugs from the Windows one, and since both sets aren't small (try to do anything different from what the designers intended and you'll see them) Java tends to not be very portable.
Re: (Score:2)
Utter bullshit. I develop on NetBSD, using a native build of Sun's JDK from the SCSL sources. I deploy to Linux on x86, x86_64, ppc32 and ppc64 as well as Windows, Solaris and Mac OS X. I've never once run into a problem with portability with my own code, and only once in someone else's code (which used com.sun classes - which is frowned on anyway). Compared to coding in C for POSIX platforms, Java's a fskcing dream when it comes to portability.
Re: (Score:1, Insightful)
So SUN gave Java on Linux a bad name by making its stuff harder to install than alternatives
Re: (Score:3, Interesting)
Re: (Score:2)
Re: (Score:1)
Now popular I'll give you... but I don't think popular == good.
Re: (Score:3, Funny)
How many lines?
Re: (Score:1, Funny)
Re: (Score:2, Funny)
Re: (Score:2)
But not foss leading to poor integration with linux distros.
Hopefully it won't be too long before the remaining encumbered components are properly replaced and opensource java becomes a part of all major general purpose linux distros.
Sun has found religion.. (Score:5, Interesting)
But seriously, this business move by Sun has made it far more attractive to my company, enabling us to test out Solaris on our existing server before we perform a rollout. In addition, having the source code for the UltraSPARC T1 has enabled us to do research into how the chip functions on a lower level, with an eye to further optimizing our software to perform even faster on it. Sun, you might win over my heart just yet.
Re: (Score:1)
Re: (Score:3, Insightful)
FYI (Score:5, Informative)
because i can't find references on the sun & openjdk site.
Re: (Score:2)
Mark Reinholt (chief engineer for the java platform) blogs [sun.com] about it. Also the experimental Mercurial repositories are open [java.net].
Slightly offtopic, so are the JavaOne 2008 Call for Papers [cplan.com].
I truly hope for the end of gcj/gij (Score:5, Informative)
Why I mention this? Because it was perfectly legal to adopt certain pieces and sniplets of code, check the way things were build an adapting those ideas. All of that might have made a difference for the gcj/gij projects. Personally I condemn those 2 projects, but having said that I will have to admit that they did make a good effort.
But the main reason I hate this stuff with a passion is because its not compatible with Java, and it is my belief that all the nonsense (gcj/gij + the bs about the closed source java) has left Java with a bad name / reputation on the Linux platform. Which I think is unfair and an utter shame. Would this have not been the case I think Java could have lifted some interoperable development movements to higher levels. Sure; it has already done this to some extend and Linux is still a big market for Sun, but when the bs was still spreading you could already easily download binary installers (self extractors) to install Java on Linux. But I have met simply way too many people who had problems to "do java on linux" and when you started disecting the problems it all boiled down to Linux distributions shipping gcj/gij thus resulting in non-working Java software. And as well all know; a good user doesn't blame his tools but the product he's trying.
I once spend 45 minutes on the Sun Java tutorial and couldn't get some examples to work. Eventually I tried on another platform, that did work, and so I knew where to look. Eventually I ended up dumping gcj/gij and replacing it, unfortunately I think many others ended up dumping Java.
Re:I truly hope for the end of gcj/gij (Score:4, Interesting)
I admit that there are few Java applications (at least on Debian) which are compiled by GCJ and packaged as plain old binary executables. Of course, this means avoiding some fancy Java tricks (the dynamic class loader, some reflection abilities, etc...).
Still, I believe GCJ does have at least such a niche market (for those few applications which don't want to depend on a JVM being installed).
Besides, GCJ is GCC based, and GCC is still a nice project (even if it is old).
Re: (Score:2, Informative)
'closed source' is an inane term. I don't think anyone from gcj or gij was describing Sun's Java as 'closed source'. It's non-free, which is what matters. Merely being able to look at the source code doesn't mean you have freedom to use, share and change the software.
Closed source (Score:2)
It is true that the gcj/gij "camp" probably didn't call it closed source, but that is because they were part of the GNU family, who preferred the original term (free software) with all its connotations.
Later the term "open source" has been diluted on message boards byt people trying to "reverse engineer" a meaning from the name. But this is no different fro
Re: (Score:1)
Re: (Score:2)
I think there is still a place for gcj as a native java compiler. What's stopping them now compiling against the OpenJDK class libraries instead of classpath? Should be a huge improvement for compatibility.
Re:I truly hope for the end of gcj/gij (Score:5, Informative)
Re: (Score:2)
That wikipedia quote is neither entirely accurate or entirely up to date
Initially icedtea was built with ecj as the compiler running on gij (a close relative of gcj and often packaged with it which may be where the idea that it was built with gcj came from).
Right now icedtea only builds with old
Re: (Score:2)
Isn't it "a part of", rather than "a close relative to"?
And in fact, to make it really confusing, since the GCJ is part of G
Re: (Score:2)
Not sure, they are seperate binaries in the gnu compiler collection (gcc) but I think gij is part of the gcj project.
But to me "built with gcj" implies built with the gnu java compiler not built with some other compiler that happens to be running under gij/classpath.
Re: (Score:1)
Re: (Score:2)
Sun's license was "open" in the sense that you could see the code. It wasn't "free" because you couldn't redistribute it. This made it unuseable by Linux distros. To avoid confusion over price, they said the code wasn't open. Technically the wrong term, but free would have caused as much, or more, confusion, and many more people would have thought that they were
Other Linux Java Options? (Score:2, Interesting)
My problem with the Sun JRE is that it is HUGE. Why do I need 100MB+ to run a simple Java application?
Are there other good JRE options for Linux? Maybe something geared towards embedded environments?
Re: (Score:3, Informative)
and this https://jdk6.dev.java.net/6uNea.html/ [java.net]
Re: (Score:1)
Re: (Score:2)
"The fix, then, is for us to take advantage of the disk cache to make sure that the memory pages on disk that we must read at startup have already been loaded before we need them. How do we do this? We cannot magically pre-load the pages just prioir to launching; unfortunately, the VM currently lacks the ability to see into the future to detect when the user will be launching Java (we would love to have this feature in the future, but it is not yet present). But we can pre-load at some earlie
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Re:Other Linux Java Options? (Score:5, Informative)
One of the reasons it's so big is because it has a LOT of functionality. But you're right of course when you say that you don't need all of that to run a simple Java application. So Sun decided to do something about that: in the upcoming Java 6 Update N (what was previously called the "Consumer JRE") only a relatively small "kernel" will be installed which has only the most essential components. The rest will be downloaded "when needed".
That's how flash won the web (Score:3, Informative)
Re: (Score:1, Interesting)
Re: (Score:3, Insightful)
Re: (Score:1)
There is no good reason not to use Java for real time systems as well. The very first JSR, JSR#1 [jcp.org] proceeds to specify what is required for real time Java. Later, it has been enhanced in JSR#282 [jcp.org], which is implemented in The Sun Java Real-Time System 2.0 (Java RTS) [sun.com].
Re: (Score:2)
Pardon moi if I would rather not deal with someone forgetting to free mallocs because they decided to shave a few microseconds off something already running within 50 milliseconds of deadline. Especially when the controller is buried under 10 tons of concrete.
Anyway, the research that's all the rage these days is static garbage collection. It works just like manually freeing memory, but you never have to actually do it yourself. It just inse
Re:Other Linux Java Options? (Score:5, Informative)
you don't. a simple stroll over to java.sun.com will show you that the JRE [sun.com] is 14M for windows and 18M for linux.
the "100M+" is if you're also downloading all their development tools and documentation (and possibly netbeans, depending on the link). not atypical in the least.
Re:Other Linux Java Options? (Score:4, Informative)
As for the complaint about docs, are you serious? Are you seriously complaining that there is too much documentation available in HTML format? And optional documentation at that? Think about what you're saying for a second: that you consider it a drawback that every class, method, and member of the JRE is consistently documented in detail.
GUI: AWT versus Swing are native widget peers versus internally rendered widgets.
RPC: RMI, CORBA, and XML-RPC/SOAP are for the following in order: RPC in a 100% Java environment, cross-platform binary RPC, and XML text-based RPC. There is a place for each of those.
XML parsers: are you referring to the SAX, DOM, and StAX parser APIs -- which would make three? Or do you mean two parsers like Crimson and Xerces. I think the former is self-evidently a good thing. The latter is due to compatibility and consistency through multiple releases as the older parser behavior may be necessary for an older app even if it's a little slower or more memory inefficient.
I can see your argument against including a scripting language, but Sun wanted to include a reference implementation of their pluggable scripting interface.
I/O: Blocking vs. non-blocking. What's the problem? Both have their uses.
What you call bloat, some would call completeness. Let's compare against some other popular languages.
Common Lisp: 10MB
Latest Python download for OS X: 17.9MB
Latest Perl download for OS X: 33.5MB (Linux version is between 18.9 and 24.8MB)
Latest Ruby (without Rails) download for OS X: 13.71MB
But don't take my word for it. Download for yourself. The only reason these other languages seem smaller to you is because they are bundled seamlessly with your Linux distribution.
Want database access, RPC, non-blocking I/O, XML parsing, etc. from those languages? Too bad, that's another download. Sure there are resources like CPAN, but why are their cores so bloated? Somehow Java is able to provide all of those "bloated" APIs at about the same download size as those languages that lack them.
And don't get me started on C and C++. They don't even have a standard database layer, XML library, or the like for you to download separately. Learned one non-blocking I/O library? Too bad, your new company uses a different one. Do you think ODBC is a good solution? Obviously you've never programmed for it.
I'm sure I could go on, but you get the picture.
Re: (Score:2)
Re: (Score:2)
Deployment in Visual Studio
Deploying Prerequisites (Visual Studio)
In order to successfully deploy an application, you must also deploy all components referenced by the application. For example, most applications created with Visual Studio 2005 have a dependency on the
Re: (Score:1)
Re: (Score:1)
The download size for the dotNET 2.0 Redist [microsoft.com] package is 22.4MB.
The dotNET 3.0 Redist [microsoft.com] is 50MB for x86 and a whopping 90MB for x64.
According to M$,
Not quite small. If the 2.0 framework install is 27 times larger than the download for x64 architecture, does that mean the 3.0 install is 2.4GB??
The JRE is huge, because Java applications are not 'compiled', they run on a virtual machine.
dotNET code isn't really compiled either. All of the programs are compiled to run on the framework. It's not
Getting harder to choose: Java or Python? (Score:2)
Re:Getting harder to choose: Java or Python? (Score:4, Informative)
Static typing (Score:2)
Personally, I find static typing annoying for small programs, and godsend for large programs.
Re: (Score:2)
Re: (Score:2)
Whitespace has meaning in both -- if you don't believe that, try compiling any Java file after removing all the whitespace. Its just that in Java, any contiguous block of whitespace outside of a string literal usually has the same meaning as any other contiguous block of whitespace would in the same place, though there are some exceptions.
Re: (Score:2)
Unfortunately Python's threading is a bit of a joke at the moment, but work is being done to sort this out. Until then, Python's performance is pretty poor compared to Java, although if I had to use a "traditional" scripting language Python and Ruby would be my first two choices with Tcl a distant third and Perl a definite no.
Re: (Score:2)
this will finally means java for PPC :-) (Score:1)
Gary Benson, main RH powerpc developer, is keeping a journal [livejournal.com] about his work, quite interesting stuff.