JSR 133, which has been active for nearly three years, has recently issued its public recommendation on what to do about the Java Memory Model (JMM). Several serious flaws were found in the original JMM, resulting in some surprisingly difficult semantics for concepts that were supposed to be simple, like volatile, final, and synchronized. In this installment of Java theory and practice, the author shows how the semantics of volatile and final will be strengthened in order to fix the JMM. Some of these changes have already been integrated in JDK 1.4; others are slated for inclusion in JDK 1.5. On other Java news, IBM urges Sun to make Java open source.
Looks like they finally fixed Java’s huge memory bloat! I’ll have to see it to believe it though.
Java is one the best OOP language out there. It is nice to see it getting tweaks in the memory model with every release.
Lot of the JMM improvement are all ready included in JRockit and IBM JVM.
http://bea.com/framework.jsp?CNT=index.htm&FP=/content/products/jro…
No wonder 80% of Enterprise development is done in Java.
EBAY is good testimony for Java.
This has nothing to do with memory bloat. It has to do with the fact that the semantics of the memory model itself are broken.
i don’t care about effeciency until can get sometrhing to work right first ergo i perfer java… but i doubt this would apply to anyone in the embedded field, so to each their and the right tool for the right job. in fact there may even be cases where Perl is a good idea <shudder>.
Sun to open-source Java. Sun said several times they won’t do this, and they have some reasons.
IBM has its own high-quality Java version, as well as (dead) projects like the Jikes compiler. So why doesn’t IBM just open-source their own stuff instead of asking Sun to release theirs. Hypocrites, all of ’em.
I agree with this. My intital reaction was, why is IBM asking Sun to open-source their implementation when IBM has their very own already that they could open-source?
If IBM sees that opening up Sun’s implementation as a good thing why wouldn’t they do it to there own? My only thought on this is that if Sun did open-source their impl. then IBM would get behind that one, and drop theirs. But if IBM open-sourced their own, who here thinks Sun would get behind them and help?
Just my 2 cents.
Would IBM be allowed to open source their version? I assume they must have some sort of licence with Sun that preclude the option of open sourcing other wise I’m sure they would have done by now.
“IBM has its own high-quality Java version, as well as (dead) projects like the Jikes compiler. So why doesn’t IBM just open-source their own stuff instead of asking Sun to release theirs. Hypocrites, all of ’em.”
Hypocrisy has nothing to do with this. Please try to UNDERSTAND the actual news items before commenting.
In order for anyone, including IBM, to Open Source java, the Java specification must be Open Source. This is what IBM asks of SUN. To let go of the control of the Java specification, so an Open Source java can emmerge under the control of the community (including IBM/SUN/etc).
As things are today, noone can make an *Open Source JAVA*. They can make an Open Source java implementation (there are several) but at the moment they decide to, say, add a new method to a class, it is not Java anymore.
For example, Kaffee is Open Source in the sense that you can do anything with its code, but at the moment you decide to change, improve or add something to the standard java classes, it cannot be called Java anymore. Only SUN can decide what changes make it to new Java versions or not. This is not very open source, is it?
What IBM proposes will make possible that for example the specs of Java 1.6 will be designed and implemented by the community in an Open Source fashion, instead of SUN and the SUN controlled JCP.
Thus, all this has nothing to do with simply SUNs java code getting Open Source. However, in the case which Java gets really Open Source, it will also makes no sense to keep SUNs implementation closed source. So, IBM proposes, that
(a) Java gets Open Source.
(b) SUNs and IBM implementation are jointly developed and maintained, with other companies as well as community support.
But with Sun at the power over Java everyone knows what they get with Java and what not. Which classes and functions are in which package, which package are shipped with the standard SDK.
I fear that if Java goes to open source that every cewl hacker adds or removes something and we got then
RMSJava 0.19.0a
cewlJAVa 1.2.34.5 beta
openJava 1.1.1.0RC1
and so on
and all indutries depending on Java because some important systems were implemented with that technology are going down.
I think only if ALL cewl OSS hackers out there sign an agreement that they not are going to change the standard Java then Sun will open source the thing
What your saying really wouldn’t make sense. I think that having a standards body, be it Sun or the JCP or whoever will always be needed. There are standards for a reason and they should be followed for a reason. It gaurantees that one impl. of java will act the same as any other impl. Where’s the evil in that logic?
And if you want to add class, add a library, but dont make any changes to the core. External libraries the improve certain things in Java can be found in abundance already. Why would everything need to be part of the core technology?
Side note, before you start claiming that someone should read the article you should try it your self. No where in there does it say IBM wants sun to open the specifaction.
<quote>
IBM is proposing that Sun, IBM and others choose which portions of the Java technology–such as the Java Runtime environment, code libraries or even server software–should be submitted to open source. Optimally, an official open-source version of Java would emerge to replace a “hodgepodge” of open-source Java technologies and efforts, Sutor said.
</quote>
Where in there do you see specifactions?
Thats why I think they should still have the specs/standards body in place. If you want to use the offical “Java” name you should have to be able to pass a certifacation test. Makes sense to me and it would solve the problem of having some impl out there done by l33t hax0rz that wouldn’t work.
“What your saying really wouldn’t make sense. I think that having a standards body, be it Sun or the JCP or whoever will always be needed. There are standards for a reason and they should be followed for a reason. It gaurantees that one impl. of java will act the same as any other impl. Where’s the evil in that logic?”
No, it makes perfect sense. Open Source doesn’t mean its a mess, nor it means that there are 300 incompatible versions. It just means that 300 incompatible versions are possible, not that they are RELEVANT.
Are there many KDEs or GNOME projects just because people can fork them? No, there are not. Are there many GCCs or Perls that people use? No, again.
What would happen is that a DE FACTO standard would emerge, the one with SUN/IBM adoption. Sure, there could be another 30 forks, but none will matter. The difference from today will be that this standard will be easier to extend and build upon, that having to go with the whims of SUN.
SUN is lousy at making changes and maintaining Java. There are 8 year old bugs in the Java bug tracking system. Swing was broken for a looooooong time, and AWT was broken from the start. They only made those major changes in Tiger (Java 1.5) because of C# (most of the changes are targeted against C# anyway).
“Where in there do you see specifactions?”
It is implicit in the wording. Read it again.
There may not be many GCCs or Perls, but how possible is it to get a binary that was compiled on one machine to run on another machine that uses a different distro? Or how about getting a Mandrake RPM to install on a SuSE system? Difficult? Frustrating? Nearly impossible?
“There may not be many GCCs or Perls, but how possible is it to get a binary that was compiled on one machine to run on another machine that uses a different distro? Or how about getting a Mandrake RPM to install on a SuSE system? Difficult? Frustrating? Nearly impossible?”
Yep.
On the other hand, its very easy to get a Perl or Python file (or a python bytecode .pyc file) to run on a different distro or platform.
Java classes are not native binaries. How’s that gonna change with an Open Sourced java standard?
Just as SUN tries to have the JVM and libraries provide tha same functionality on different platforms, so can the community, specially if this community includes SUN and IBM.
The community already does this for other languages. Perl, Python, etc…
> Java is one the best OOP language out there. It is nice to see it getting tweaks in the memory model with every release.
This assertion is CRAP. Java language wise is just barely different from C++, and actually is more constraining in what you can do as a whole. Not to mention the ongoing incompatibilities between different versions of the virtual machines.
Do some more studying on languages, please. Something like Ruby is far more powerful as a full featured OOP language. Too bad none of these better languages has taken off as a new standard.
The article is NOT AT ALL about opening the development process for a future Java language specification. The article gives no reason to think so, even implicitly. It states that “Sun’s strong commitment to open-source Java would speed the development of a first-class and compatible open-source Java implementation”, also “IBM would provide technical resources and code for the open-source Java implementation”; “Optimally, an official open-source version of Java would emerge to replace a “hodgepodge” of open-source Java technologies and efforts”.
I have worked on a JVM in the past, and I can attest to the fact that open-source VMs such as Kaffe are incomplete, for the simple reason it’s not so easy to create a clean-room implementation of a large platform based solely on a specification, the latter even being vague on some important points. If Sun were to listen to IBM and open source their own JVM implementation, there would be no need for copying what has been created so far, an a whole community would be able to contribute to implementing the next Java.
I think that this is the right way to go. Controlling a general-purpose language via a single implementation would condemn it to oblivion.
-Vesko
“There may not be many GCCs or Perls, but how possible is it to get a binary that was compiled on one machine to run on another machine that uses a different distro? Or how about getting a Mandrake RPM to install on a SuSE system? Difficult? Frustrating? Nearly impossible?”
Stupid? Yes.
“Nearly impossible”? No.
“This assertion is CRAP. Java language wise is just barely different from C++, and actually is more constraining in what you can do as a whole. Not to mention the ongoing incompatibilities between different versions of the virtual machines.”
Have you ever even programmed in Java? The “incompatibilities in virtual machines” are NOTHING, just very very minor anoyances, not applicable in the 99,9% of cases.
Except if you mean the imcompatibilies between the ages old Microsoft VM and the recent VMs. That doesn’t matter, though, because noone in a right state of mind wants to run Applets anyway.
On the other hand, imcompatibilites between C++ compilers are VERY REAL, and a pain in the ass when you want have your source to support more than one of those.
“Do some more studying on languages, please. Something like Ruby is far more powerful as a full featured OOP language. Too bad none of these better languages has taken off as a new standard.”
There, you give it away. Ruby is a scripting language. Java is not. Java is also several times faster (while it still is slower, compared to native stuff). So, as what exactly should Ruby take off as a “standard”?
There a tens of languages with “full OOP support” (which, in a pragmatic point of view, matters not). Yet those are still irelevant. So should it be different?
“There, you give it away. Ruby is a scripting language. Java is not. Java is also several times faster (while it still is slower, compared to native stuff). So, as what exactly should Ruby take off as a “standard”? ”
Dismissing ruby and python as “scripting languages” just because they are dynamically typed is just as silly as dismissing java because it is not compiled directly to native code.
There are some interesting approaches that could give dynamically typed languages similar performance than statically typed languages. Check out psyco <http://psyco.sourceforge.net/>. It works vaguely simiar to hotspot (runtime profiling and creating native code for the most often used specializations)
And for many applications python is fast enough since it can rely on highly optimized c libraries. Bittorrent is a good example of a very fast python program.
>Something like Ruby is far more powerful as a full featured >OOP language. Too bad none of these better languages has >taken off as a new standard.
See, now, there’re many dimensions here. Any more, languages themselves are more-or-less the same; what differentiates them is the library size (both official and community-supplied), and who is backing them.
>Java language wise is just barely different from C++
syntactically, I can agree.
Now, show me the C++ equivalent of Tomcat. Sure, I’d rather be flexing on some heavy template gymnastics using boost or Loki, but the fact is that if you want a robust, data driven web site, NOW, you’re wiser to go with Java. I’m sure some extreme gurus are doing some killer stuff in C++ for the web, but I feel confident in labeling them a minority.
>See, now, there’re many dimensions here. Any more, languages themselves are more-or-less the same; what differentiates them is the library size (both official and community-supplied), and who is backing them. <
Very true, those people that think one language is the best are those type of people that only know that one language and are afraid of the others. Each language has its place and a true software engineer recognizes that you use the best tool for the job whether is be Java, C#, assmebly, perl, Ruby, lisp, scheme, et. al. (we can’t forget Fortran-77
@Wee-Jin Goh: Praytell, what does the difficulty of getting a binary to run on different distros have *anything* to do with Open Source causing lots of forking? I got news for you: the binary incompatibilities between distros have *nothing* to do with forking. Its not like an RPM won’t run on Debian because one uses RH-Glibc and the other uses Debian-Glibc!
@dash: Smalltalk! Reasonably good library support, fast native compilers (including commercial ones), and more OOP than Java can possibly hope for in its wildest dreams. You may thing it is “irrelevent” because it is not well-hyped, but that is your loss.
Just pointing out the incompatibilities between linux distros that are open sourced. RPMs won’t normally install on Debian or … wait forget that. Mandrake RPMs won’t install on SuSE because there are different versions of the library, or a required library is installed on Mandrake but isn’t present on SuSE. And I’m just talking about the major distros. Let’s not even go into trying to get RPMs to work on Debian. It might be possible, but it isn’t always easy.
What happens if they open source Java and say a few different VMs become common (say IBM and Sun’s). Are we going to get the same problem that Linux faces? My Java program runs perfectly on Sun’s JVM but won’t run on IBM because the some libraries aren’t present/versions incompatible/what have you. And that’s not counting all those other Java VM wannabe’s.
Again, what does the incompatibilities between distros have anything to do with forking? Distros aren’t incompatible because the code is forked. They are incompatible mainly because of different versions of libraries. Unless you stop releasing different versions of programs, this will be a problem even if the code was closed-source.
As for open-sourcing causing a few different VMs to be common: they already are! And being closed-source has done nothing to prevent it! Indeed, it is the closed-source nature of the Sun VM that has caused these many of those other VMs (eg. Kaffee, GNU Classpath) to exist.
In any case, a proliferation of implementations is a good thing. Its a logical consequence of having a freely implementable standard. When Sun gives up on Java (and they will) people will still be able to use it because of these other implementations. Can you imagine how disasterous it would have been if Bell Labs had kept C closed? When AT&T focus shifted, C would have died. There is a reason why people like open standards so much.
Look back at my posts. Did I ever say anything about forking? I know that forking argument is what Sun spews, but I don’t buy it for a second. I brought up the issue of RPMs because it illustrates what could happen if Java were open sourced and different vendors decided what they could include/drop from the JRE.
Just take Sun and IBM. If Java were just open sourced, what’s to stop IBM from dropping Swing from their VM, replacing it with SWT?
In any case, a proliferation of implementations is a good thing. Its a logical consequence of having a freely implementable standard. When Sun gives up on Java (and they will) people will still be able to use it because of these other implementations. Can you imagine how disasterous it would have been if Bell Labs had kept C closed? When AT&T focus shifted, C would have died. There is a reason why people like open standards so much.
—————————-
I’m sorry Rayiner, I have a lot of respect for you, but I disagree. When does having an open standard have anything to do with being open sourced? You can implement the Java specification now and many projects exist that have already done that( GCJ, Kaffe, Jikes, SableVM, etc). The only restriction is that they can’t call it Java. This is similar to the Mesa project, that implements the OpenGL spec but can’t call itself OpenGL because it isn’t certified by SGI.
Speaking of C, how long did it take C to be standardized? Took about 12 years, assuming it was finalized in ’77 and standardized in ’89. And how long was it before most C compilers adhered to the ANSI spec? I don’t know the exact answer, but pretty darn long.