Java To Be Opened For Christmas?
MBCook writes "At the Oracle OpenWorld conference, Sun's CEO Jonathan Schwartz announced on Wednesday morning that Java would be opened within 30-60 days, which would would mean about Christmas Day at the latest. Sun first announced they would do this back in May at JavaOne but didn't give a date. We've seen rumblings before on this topic. Schwartz also commented on the companies Sun Fire servers, Sun's relationship with Oracle, and general trends."
Is Java-S-E.
----- You know you have ego issues when you register a domain in your name.
Now maybe we can have a Java plug-in for 64-bit browsers.
Mmmm... Java with the lid off, so we can see the coffee inside...
Sorry, couldn't resist, must have had too much caffiene thismorning...
Under what license?
If you mod this up, your slashdot background will turn into a beautiful sunset!
there is no such thing as too much caffeine :)
If I'm getting java for Christmas, it should be gift wrapped. An espresso machine would be nice too.
Java would be opened with 30-60 days
within methinks
Letter To Iran
I'll believe it when it happens. My money is on them releasing under a horrid unfree license and calling it Open Source.
But at this point it really doesn't matter anymore. GCJ already builds many major Java based apps into either Java bytecode or native executables and has long since passed the point where development would be hindered by a Open Source/Free Software release of Sun's version.
GCJ is now bringing a lot more to the table than just cloning the Sun stuff. Sun would never do native executables because it doesn't fit into their 'vision.' The JVM and Write Once Debug Everywhere has no real place in the Free Software world. In the Free world portability comes from automake/autoconf and doesn't need to pay the emulation overhead of a virtual machine or any of the other problems. Problems like each major Java app tending to bring along an entire JVM and set of libraries to solve compatibility issues.
Something I have been wondering.... GCC now accepts Java source and emits either native binaries or Java bytecode. Can it take C/C++/etc and emit bytecode? If it is treating bytecode as just another target what if a C# frontend were written? Could gcc take C# on input and emit Java bytecode on the other end? And if a mono backend were added could it compile Java source to it? And if this all came to pass would it be a sure sign the end of times were at hand?
Democrat delenda est
Open source VMs already exist, what we need is for sun to open source the java libraries.
FTA it looks like it really is, finally about to be reality (:)), Java under an OSI approved license. Not only that but within 60 days and all because of pressure from the community - I wonder where else that might work (drivers? - nah need a bigger market share...).
It looks like Sun Microsystems are starting to see the benefits of Open Source technology, first Open Office (Under the GPL no less) then Solaris and now Java, - I can only hope it catches on throughout the industry.
Just a couple of points - I know that Java isn't being released under the GPL, and that there are still some interesting debates going on about the CCDL and interoperability with the GPL (I wont even pretend to know the precise issues), but it is definitely a good thing. Since Sun Microsystems is primarily seen as a hardware company, and presumably isn't too worried about the revenue's it is losing from the software sales it could have had (I know this doesn't apply to Java but it could have to Open Office and did to Solaris) it does mean that nothing that they are doing can be readily applied to a Software company. So anybody suggesting that Microsoft et al should start Open Sourcing their code because it works for Sun Microsystems is probably a little off the mark.
Well anyway - Be a good day when it *actually* happens and his is very good news. I wonder if I should look at using Java...
PS: By the way (and slightly random) my spell checker in OO.org attempts to correct CCDL as CUDDLY and GNU-GPL as SNUGGLE, how sweet.
The dichotomy that exists between Microsoft Java (which is pretty bad) and Sun Java is, if not jarring, quite irritating. Thankfully, Sun Java is the norm. But if Sun Java is released under the GPL, I expect to see several more versions of Java, most of them incompatible with each other, coming out soon. Iceweasel, anyone?
Blackdown provides a 64-bit plugin. It has even more stablity problems with almost no human noticable performance benefits. There are some advantages to using a 64-bit JRE such as SSL/TLS in Tomcat (and other servers side applications) but for 99% of client side webapps that just does not seem to be the case. Also, using a 64-bit browser also means no Adobe/Macromedia Flash Player plugin for you! I know some YouTube junkies that "need" Flash more than they need Java.
the terms of Suns open initiate are so strict that Im not really all that excited.. you see how great it was for openSolaris.. it was a touted as a Linux killer??? well , in short .. nothing is gong to change..
Whoa, whoa, whoa, back up — just how the fuck do you know that?!
You the Vatican's official gynaecologist or something?
Still wondering if this means they'll be opening up specs on how the ARM Java acceleration works ... it would be nice to have some of those free JVMs able to use that to speed up their
bytecode interpretation.
For those of you who don't know about this, most modern ARM CPUs -- like the ARM-926ejs as found in the Nokia 770 and many cell phones -- include three processor modes: (1) pure 32bit ARM instructions, (2) a 16-bit compressed version of ARM instructions called "Thumb", widely used in microcontrollers, (3) an 8-bit Java bytecode interpreter. The first two have public documentation. But ARM won't give docs to the last out, because Sun won't let them do that; you need a separate licence from Sun to get those documents. So it's fully within Sun's power to open up some widely available Linux-savvy hardware to run Java a lot better ...
There's another CPU that's in the same kind of boat, the new AVR32 from Atmel. You may have noticed that Linux 2.6.19-rc includes initial support for that architecture. AVR32 CPUs have analogues of (1) and (3) above ... but again, Atmel won't give docs to
the Java acceleration out, because Sun won't let them do that.
(And for background info: yes AVR32 is very new, likely its audience today is almost
all developers, only one model of chip available so far.)
So how about it, Sun ... are you really going to open Java up??
We need slower slugs.
The Sun Java virtual machines jumped the shark the same month they won the lawsuit against Microsoft.
Their latest versions are bloated, phoning-home pieces of crap that suck ass almost as bad as RealPlayer...
and, like RealPlayer, in-the-know independent system builders go to OldVersion.com to obtain a replacement.
We build or rebuild several systems a month with Microsoft's VM and no Sun VM. The machines run better, and have no problem handling the vast majority of java applets.
If you're writing code that demands a specific brand or version of Java virtual machine, perhaps you should learn to write better code instead.
Sun has a multi-decade track record of talking about opening things, but not really doing it.
I'll belive this is really "open" when (if) I see it and it's really open.
And if so it will be a first for Sun.
Bantam Dominique roosters crow a four-note song. Once you've heard it as "Happy BIRTHday" you can't NOT hear it that way
Ummm, didn't Sun sue Microsoft because they wanted to keep full control over java? Now that their opening it up doesn't this give microsoft the right to produce/release their own virtual machine again?
Open has very different terms, and CDDL is not one of them, period. I'm not saying it has to be GPL or BSD licensed, but CDDL is simply an unworkable license, since it is incompatible with the majority of Open Source licenses out there.
Opening Java might sound all well and good, but not if you can't do anything at all with it, without violating the license terms.
Thanks, but no.
Now that you mention it, that sounds hot as hell. Maybe I'll go nail me one...
Let's not forget that the Java on cellphones, J2ME, is a small subset of J2SE or J2EE. The interpreter may not speed up too much J2SE code. J2ME API's (maybe VM?) seem to be open source already based on a quick google search: http://www.sun.com/software/communitysource/j2me/ atleast the MIDP/CLDC/CDC parts.
It would be interesting to know exactly how the chipmakers went about implementing the interpreters in hardware and/or firmware.
Is this going to end up like Al Capone's vault on Geraldo?
So in other words, they're not open sourcing Java.
an 8-bit Java bytecode interpreter... But ARM won't give docs to the last out, because Sun won't let them do that
u re.html
http://www.arm.com/products/esd/jazelle_architect
Put the processor in "Java bytecode" state, and it executes 8-bit Java bytecode directly. It's a third instruction set for the core, in addition to the ARM and Thumb instruction sets.
ARM doesn't document the Java bytecode. They refer you to Sun, which seems appropriate since that spec is proprietary to Sun.
Pick a processor core with "J" for "Jazelle" in the name, and read the Architecture Reference Manual.
"You can switch the operating state of the ARM7EJ-S core between:
- { Thumb mode deleted }
- ARM state and Jazelle state using the BXJ instruction"
http://www.arm.com/pdfs/DDI0214B_7ejs_r1_trm.pdf
"BXJ" stands for Branch and Exchange to Jazelle. It works like the other ARM branch instructions. If you have some bytecode at address X, then load X into r0 and "bxj r0". The processor starts executing the bytecode at that address.
What else do you need to know?
(Yes, the manual does go on to discuss exceptions that take you back out of Jazelle mode, what happens when the processor hits emulated/extended byte codes, and so on. You want to implement JIT to native ARM code, you can do that, too -- but that's your software problem.)
No big conspiracies here, it seems. Took me three searches on the ARM web site to find the info.
... the new Amiga is just around the corner!
I'll believe it when it happens.
http://outcampaign.org/
A wise zen monk went into a fast-food joint and said "Make me one with everything."
An even wiser zen monk didn't go into a fast-food joint, and said
"Make me one OF everything."
One standard version of core Java things like the language definition, bytecode definition,
and the annointed standard libraries is absolutely ESSENTIAL to Java's continued success.
Because "one of everything" means that a java app and library code-sharing culture and a
shared and reusable expertise can flourish. Fragmentation of the core standards will lead
to disintegration of the core value proposition of Java.
I hope that this issue can be dealt with as Java is opened.
Perhaps by trademark protection means? Break (fork) the standard if you want, but if you do
you can't call it Java.
Or perhaps just by a consensus-agreed committee approval structure like the java community
process.
Can you imagine if everyone were free to fork the XML standard and still call it XML.
Sheer pointless chaos.
Java forked in its core standards and libraries is the same.
Where are we going and why are we in a handbasket?
The problem with open source today as I see it is seperation. Many people share many different ideas and believes and if there isn't an entity which can lead it all into good paths you're in for chaos. Sometimes this doesn't have to be bad perse but it can be annoying.
As you can see today with many package maintainers who's only link with the software they're maintaining is that they like it. Only 2 weeks ago did I try to utilize FreeBSD and its ports. I already installed MySQL 4.x and then wanted dspam. No go.. It demanded I used MySQL 5.x. A perfect example IMO, the package maintainer asks...
And that is why I don't like the idea of Java going open source. Still, despite all that I truly hope it might turn out to be a GCJ killer. Why? If there is one thing turning off Linux people from Java it has got to be gcj.. How frustrating can it be when you're trying example code and only come to the conclusion that it simply doesn't work? You typed everything as it should, you studied the code yourself but yet it does. not. work. Well, enter gcj hell. If you're going over the Java tutorials you'll be sure to run into some beginner examples which will not run when using gcj.
In fact, many of the usenet and irc groups I'm on start asking people if they're using gcj when experiencing problems on Linux. If so then the advice is: ditch that POS and get the JVM from Sun. Strangely enough this fixes the problem in most of the cases. So yes, I don't like the idea of Java going open source but I'd be very pleased if this stopped the gcj idiocy and got distributions to ship with the official and working Java Virtual Machine. The one from Sun ofcourse...
I can't believe how many IBM trolls are in this thread (and Slashdot as a whole) decrying Sun's lack of a track record in open sourcing their stuff.
Have they ever heard of NFS? OpenOffice? OpenSolaris?
Is there something wrong with the CDDL that's not wrong with the Mozilla license? From what I understand, the CDDL is similar to the Mozilla license but simpler. I invite every single one of those armchair critics to stop using Firefox if they're so adamant.
Unlike IBM (with the exception of Eclipse), Sun actually *open sources* stuff. I invite those IBM trolls to push their corporate master to open source WebSphere, DB2, Rational Rose, or Lotus Notes.
This space left intentionally blank.
Isn't the garbage collector supposed to minimize memory leaks? At least C++ has an excuse.
"Or Java that utilizes the 64 bit arch as well as take advantage of dual core processing and hyperthreading."
That would be AWESOME! It might actually be as fast as 32-bit single threaded C!
About 2 months ago, a Sun programmer dropped into #perl to ask some questions.
They were cleaning up some bitrot for a program that had only been used once before.
The program was written to check the OpenOffice source code for intellectual property owned by other companies, so that they could release it cleanly.
The program written for OpenOffice had been pulled out of the archives and was being overhauled for the purpose of checking the source code for Java for similar intellectual property issues, so they could release it cleanly.
So yep, it's almost certainly going to happen. They are certainly doing the work internally to make it happen.
Minimize, yes. Eliminate totally, no.
It's still easy to have memory 'leaks' in a language with a GC.
But how big is the Java Library Specification? How can one be sure that an implementation of all of java.* and javax.* is 1. possible within human life span and 2. correct?
The Java standard libraries are rather horrid.
What we often find is that they fuck up royally the first time they attempt to add some functionality. Soon enough the very obvious problems with their implementation are seen, and then they're forced to try again.
This happened with collection classes. First there were classes like Vector and Hashtable. Soon enough, they ended up being replaced by ArrayList, LinkedList, HashMap, and a host of other classes and interfaces that make up the Java Collections Framework. But the new JCF classes aren't threadsafe, which often causes problems. There are remedies, but they often make things even worse.
Of course, then there was the AWT to Swing transition. Both are horrible. AWT is lacking in many respects, and was not suitable for serious cross-platform applications. Swing, on the other hand, has absolutely terrible performance. What should have been done was a mixed native/virtual widget technique, as done by IBM's SWT.
There are other examples. But the bottom line is that the Java libraries have become a real pile of shit. You have deprecated junk that's in there for backwards compatibility. You have multiple poorly-designed classes for doing the same thing. It's just a shitty situation.
What needs to happen is a start from scratch. Java needs a class library that's sensible in all respects. It needs a performant, threadsafe collections library. It needs a GUI framework to replace Swing. The IO classes could use a good reworking, even beyond the java.nio.* classes. In short, Sun needs to throw away what they've come up with so far, and start from scratch. Except this time, they should do it properly. At this point, they do have two or three fuck-ups for each area they can learn from.
I am surprised nobody mentioned Apache Harmony - http://incubator.apache.org/harmony/ - that's an open-source Java SE implementation.
Simpy
My question isn't about J2ME or any blob of Sun code though. It's about actually having an open technical ecosystem. That said:
Remember that "run everywhere" mantra about Java? It would work a lot better if the runtime footprint of the JVM were bearable. For embedded systems, J2SE (and J2EE) are all but completely out of the picture. If the JVM core were all in the hardware, the rest of the system could be quite reasonably small ...
Hardware, not firmware. Some documentation talks about "bytecode accelerator", other docs are more explicit: there's a significant subset of the Java bytecodes that are directly executed by the hardware, just like "native" instructions. There's a CPU mode bit that says it's executing those bytecodes rather than the native instructions, and various types of context switches (irq, syscall, escape to native code, implement "complex" instructions in native code, etc.) will save restore that bit as well as other context in the Java thread.
So what's needed is to know what instructions are directly interpreted, how to perform the context switches, and similar stuff. Routine systems programming information, which Sun would stop locking down if it actually cared about an open programming ecosystem.
Than an open jar of java beans.
Thank you, thank you, I'll be here all night!
If you can't say something nice, make sure you have something heavy to throw.
You don't need to be from IBM to be extremely skeptical about Sun's record of open sourcing Java. They have repeatedly promised to do that, and never done it. It's been many years now ...
Do you maybe recall the whole bit about pushing Java through ECMA? The reason that fell down is that ECMA required real openness, and Sun was unwilling to let the reins loose enough to achieve that. So they created their own quasi-open "Community Process", which they control to a degree that is completely incompatible with truly open standards. There are in fact checklists that must be followed to get an ISO standard mark, and many of the bullet items were things that Sun just refused to do.
People that are (still) pissed off at Sun about this are widespread in the industry, and are not just from IBM.
Okay, now that Sun is releasing the source to Java for free, they are sure to make millions giving it away. Please run the stock up so I can cash out.
there is a Samta Claus!
Now Wake me up when Java stops sucking!
I hold very few opinions. I hold information based on observation and fact. If you wish to disagree, please use facts.
Who is this going to be an advantage for?
The Java-people seem to be all keen on "one Sun way", screaming about how making Java open source is going to destroy it. That it will result in lots of incompatible versions.
The open source people who want to use a VM-based system are already using MONO. They haven't been sitting on their ass for years, doing absolutely nothing while waiting for Java to be open source.
The first group is going to hate the change. The second already regards Java as nothing more than a previous step in evolution of VM's, like Homo Erectus was for humans.
Oh it does. If you have done a lot of programming in lots of different langs its hard to go back to non GC types. It really makes life easier. And no C++ does not have an excuse. You can use GC in STL and such as well.
Programming langs are tools! Not religions. Bad java is slower than proper C++. Poor C++ is hard to debug compared to well writen Java. Use the right tool for the job.
If information wants to be free, why does my internet connection cost so much?
Sun has already said that they were going to try to come up with an "open source" license that still prohibits "fragmentation"; but that's a logical impossibility, since the ability to fork a project is an intrinsic part of any license that can be called "open source".
So, "Java will be open source in 30-60 days" may simply mean that Schwartz will attempt to redefine the meaning of the term "open source" within the next 30-60 days to fit the source license they are already using.
Only if you redfine 'leak' to be something other than data which is no longer reachable.
A precise collector will always correctly identify the liveness of data, because it knows what is a pointer into the GCed heap. (That is the definition of a precise collector).
A conservative collector is used when an object may or may not be a pointer into the GC heap (e.g., it may be a pointer into memory that is not to be managed by the collector, sometimes it may be another type of object entirely). Conservative collectors must err on the side of retaining possibly (but not provably) unreachable objects, and so can leak. However, for a number of years now, modern approaches such as barriers and generational scavenging asymptotically eliminate such retained dead objects from the managed heap, unless they are deliberately created. Such deliberation usually requires some effort, can be prevented by the compiler, is readily detected at runtime, and is easy to debug.
Bad programming practices can result in the growth of lots of live data. Typically this involves using global variables. Sometimes this is accidental, such as when the top-level retains a history of results returned to it for debugging purposes or other convenience. However, these are not leaks per se -- the data is live in that it is reachable. Making the data in question unreachable (reset the global variable or previous-results list) will allow either type of collector to reclaim the space.
In general it is much more common that memory is consumed by abandoned data that was created in heaps not managed by the collector, and these heaps are almost always used by code written in another non-GCed language. This includes the runtime, libraries, and foreign functions. Usually this is fixed via careful wrapping of the non-GC-language code with finalizers (exceptions, dynamic winding/unwinding, and other techniques), and in most GCed languages which expect to interact with things like the POSIX API this is usually done through libraries written in the GCed language.
Finally, some GC implementations, particularly conservative ones, are simply buggy or are not using modern techniques. In this case it's the implementation's collector leaking, not the language.
... or at least written by a non-computer scientist who thinks open source is some sort of wagon. "The core platform [...] will be offered via an open source format"? "available via open source"? WTF ?
If you don't fail at least 90 percent of the time, you're not aiming high enough. (Alan Kay)
It's easy to do anything withou making a blocking call.
It's better to be the foot on the boot than the face on the pavement. ~~ tkx Kadin2048
"Schwartz also commented on the companies Sun Fire servers",
would read much better if it said something like,
"Schwartz also commented on the company's Sun Fire servers".
What's wrong with VB ?
So, with that OSS argument against Java out of the way, can we drop the Mono desktop apps already?
.exe and .dll entries in my ps output gives me the shivers.
Those
Only if you redfine 'leak' to be something other than data which is no longer reachable.
That depends on what you mean by "reachable". It is quite easy to end up with memory that cannot be reached from Java code but will never be collected.
This classically happened (and probably still does although I haven't checked for a while) if you forgot to call dispose() on GUI windows - the native GUI resource would not be freed because there is a piece of native code that hangs on to it until you call dispose().
Furthermore, you can easily "lose" your references into libraries that do not offer public access to them thereafter. For all practical purposes, these are not reachable from your code, although they certainly are reachable by the GC.
sigs are hazardous to your health
Is there a CPAN equivalent for Java?
Comment removed based on user account deletion
First of all, whether or not Sun goes through the EMCA has nothing to do with their track record on open sourcing stuff. That's a non sequitur.
Secondly, Sun largely (but not exclusively) maintaining control over Java means that they can continue to innovate with some measure of centralized control. Look what happened to JavaScript when it got EMCA'd.
Third, Sun has done absolutely nothing to prevent the FSF and the Apache foundation from working on their own open source Java implementations.
Fourth, Sun has invited a wide range of stakeholders into the JCP, including the Apache Foundation.
So what's the problem here?
This space left intentionally blank.
You mean redefine it back? A memory leak is simply a set of circumstances in which a program isn't freeing memory taken up by data that is no longer in use.
Whether that data is reachable is a slightly different, but related, issue. Data not being reachable yet remaining in memory certainly is one form of leak, because that is one set of circumstances in which unused data will continue to hog memory, but it's not the only one.
The misunderstanding that "unreachable" is the whole of memory leakage is one reason why automatic garbage collection should never be taught as a panacea. Regardless of whether you use it or not, you should work with it and ensure that you don't leave objects referring to other objects if there's no cause to.
You are not alone. This is not normal. None of this is normal.
That can't be right - my wife already opened her new coffee maker on her birthday!
Centralized control isn't "open". It means that Sun has the power to quash innovations it doesn't like, or delay them until they can't be as effective, or otherwise tilt the playing field. That's the point of the "control" after all.
While it has excluded an even wider range ... those too small to fork over the $$$ to join,
or too open to agree to strangling discussions with non-JCP participants for a year or two
before the JCP proposal gets to an all-but-complete late draft stage.
Lack of openness on Sun's part. Providing some access to the source code, at this extremely late date, isn't much of a fix for a process that's fundamentally not open ...
for a game that's stacked in favor of a certain model that hasn't even
done all that well for Sun's shareholders.
"loose = advective, opposite of tight."
What's an "advective"?
People who can't spell shouldn't pick on other people's grammar.
Well, that's why they invented multithreading to start... but in some situations, you really simply can't have another thread.
Seriously, this has been done a lot of times, with success.
In your others points, well, I agree with you.
It's better to be the foot on the boot than the face on the pavement. ~~ tkx Kadin2048
Ooh, I hate to reply to myself, but this is good news.
It turns out that Atmel just published the AVR32 Java Technical Reference Manual giving exactly the information I was asking about. Probably about 40 hours before I posted; sigh. I guess that Atmel guy was wrong when he said they couldn't publish that information ...
I've only skimmed those docs, so I can only say that they look like the right thing but clearly omit things like "how to invoke a synchronized method" (marked as TBD) ... but it's the first
revision, and Atmel's pretty good about revising such stuff.
So part of my question is answered! Not the ARM part, which is too bad since ARM is the widely available platform, not AVR32.
I'd like to hear some *real* arguments against VB ...
Wonderful, a nice little toy programming language that I can give to the kiddies. Something they can be frustrated with, since it doesn't work, or come with everything I need to run it. One more 'toy' I can return to Santa, hopefully I kept my receipt.
Seriously, Java is nothing better than a toy, it should have been properly open-sourced years ago, maybe then, someone could have taken it to the same level as C, given it some rudimentary standards compliance, and done something useful with it.
As it stands, java is good for letting those too affraid to learn a "real" language, or harm their hardware, get some basic programming experience, at the cost of some of their sanity.