Oracle and the Java Ecosystem
First time accepted submitter twofishy writes "After an undeniably rocky start, which saw high profile resignations from the JCP, including Doug Lea (who remains active in the OpenJDK), and the Apache Software Foundation, Oracle is making significant efforts to re-engage with the wider Java ecosystem, a theme which it talked up at the most recent JavaOne conference. The company is working hard to engage with the Java User Group leaders and Java Champions, membership of the OpenJDK project is growing, and the company is making efforts to reform the Java Community Process to improve transparency. The firm has also published a clear, well-defined Java roadmap toward Java 8 and Java 9."
Talk is cheap.
seeing what's happening on the modularization front i'm afraid it'll be just like the fiasco with log4j and jdk logging which came afterwards. modularization is what java applications (well, backend servers powering too complex enterprisey-apps) need, and that should be achieved through the means of easy to use osgi tools instead of yet another (sun|oracle) screwup mimicking an "oss standard".
Compared to other development platforms (eg. MS C++, C#.NET etc) the influence of Oracle is less important than many people may think. Basically the OpenJDK is more important than Oracle's commerical offering (the successor of the Sun JDK - which is very similar to OpenJDK as they have almost all source code in common). But even if this were not the case the Java 'world' has a lot of alterantives: the IBM JDK, GNU GCJ, Apache Harmony. This means that Oracle can try throw its weight around but it is not as devastating as Microsoft would be in the .NET world. This is one beauty (for end-users/developers) with the Java ecosystem.
Oracle knows, the nineties were the best :D
That OpenJDK could just get the lion share of development and mindshare. If LibreOffice can functionally replace OpenOffice there's hope for OpenJDK. Unfortunately LibreOffice had years of a head start on that front (functionally go-oo, etc).
I would say the majority of Slashdot readers using Java do so in an enterprise environment. The Java Enterprise Edition (JEE) specification is controlled by the JCP, where Oracle has heavy influence. JEE application servers adhere strictly to this spec.
It should be readily apparent from my own open documentation and planning approach for MSS Code Factory and Singularity One just how much I believe openness to be CRITICAL to running a modern technology endeavour. The days of closed door development and the sudden release of new technology products is not only disruptive to the industry and employment, it's a fundamentally wrong-headed approach to someone who believes in the GPL ethos as I do.
Kudos to Oracle for realizing the way they were handling things was going against the principles of the way Sun had originally configured the Java community.
I do not fail; I succeed at finding out what does not work.
Oracle is still on of the biggest contributors to open source and did even increase their support for it in terms of manpower. Impossible to judge them now, but let's wait until their agenda becomes more apparent.
Stop suing Google and get a fair license for Android if they choose to stay with SUN java and not OpenJDK. And let FREE operating systems distribute correctly built packages of Java. Then I might give a crap what Oracle is or isn't doing as far as engaging the community. Other then that they can go pound sand.
With government or corporations, you would do better to assume the exact opposite of what they claim. In general, the larger and more profitable the entity, the more likely it is they are lying through their teeth.
Disclaimer: I am no Java expert.
Is it the case that until Android came around, Java, the language, the libraries and the VM collectively known as "Java" was write once run everywhere platform? Or is was Oracle, now Sun being unfaithful in its representation of what Java really is?
Seriously, unless you are doing something weird, reasonably OK written java app would run under any platform. There might be some small issues, but cross-platform apps with Java are much much much easier to write than cross-platform apps with anything else.
--Coder
"Everywhere" is clearly not true, but I've been rather successful run my compiled Java server code on Windows, Linux, HP-UX, and even Solaris with only a few minor changes where I flubbed (windows pathing and such). In the last 10 years I think I had 1 single issue that was JRE related and it had something to do with how the HP JDK handled threading on a low level. Other than that it's been quite smooth. Now, at the other end of the spectrum with embedded java on cell phones and such it's been a total nightmare.
Except it's *always* been "least common denominator". For example, Java runtimes have never supported the Windows named folders. (Basically, they hand you the Roaming App Data folder, tell you that's "home" and you're stuck with it-- there's no way of fetching other named folders or even taking the value it gives you and reliably finding the Documents folder using it.
Basically, they took the bare minimum POSIX features, assumed that was all you need to support every OS ever, and implemented it with that assumption-- even though those assumptions are completely wrong in Windows. (And Mac Classic, but that doesn't matter anymore.) Due to this, it's virtually impossible to write a technically correct Windows application in Java.
Comment of the year
That "compile once run anywhere" stuff is only relevant for Notch who develops Minecraft.
Everyone else who uses Java does not run it anywhere but on a single test/dev server.
And as soon as they have made the measurements and come to realize how Java performs - Java will run nowhere.
Is it the case that until Android came around, Java, the language, the libraries and the VM collectively known as "Java" was write once run everywhere platform?
I was there. It was never, ever that way. You couldn't even run multiple java apps on the same computer, because one service provider would only run under and support (made up version) 1.1 and another would only run under and support (made up version) 1.2 and they'd crash horrifically on each other's version. So you'd have workers with two PCs on their desk because they need access to both apps. It was just a nightmare.
It was supposed to be multi-platform across anything, but it wasn't even as inter-compatible as windows. Ugh.
Things may have improved in the last decade or so, but in the olden days it was horrific.
"Science flies us to the moon. Religion flies us into buildings." - Victor Stenger
It's not whether or not it's true, it's whether or not anyone cared.
When Java was something that would run in a browser, yes, that was important. But Java went on to run back-end server and enterprise systems, and there it really doesn't matter because people engineer for specific hardware.
Yes, there are exceptions. There's still some "run anywhere" exploited on the desktop - e.g., Crashplan's desktop GUI. But most companies who are doing Java at any scale are doing it on specific hardware - i.e., their backend processing system runs on x86, SPARC, POWER, or whatever and so who cares if they could pick up the Java code and move it? They're never going to.
Advice: on VPS providers
Generally, though there are always issues with the actual API implementation on specific platforms like platform specific bugs. But yes, the language is standardize (no deviation between platforms but that's true with most languages), the libraries api is standardized and the same no matter the platform (much like cross platform libraries for other languages), and the VM is designed to interpret the applets the same way (minus inconsistency). Basically, with java, the VM does all the work in terms of cross platform rather then the compiler like most other languages. So while write once is true for many languages(though some languages requires you to be more careful), compile once is only true for an interpreted language like java.
By all means, mod me off-topic, but it was worth it.
"The greatest lesson in life is to know that even fools are right sometimes" - Winston Churchill
Oracle has been hostile to open systems on every front. Oracle has been indifferent to the concerns and contributions of legions of developers, and no meaningful effort was made to avoid the trauma that has ensued with the acquisition of Sun. Oracle clearly does not give a damn.
I've used most of the common tools of the trade that have appeared during the last 20 years. Java was among those at least 4 occasions that I recall. In each of those cases Java was one of several choices available to me, and in every case the competitors could have served equally well.
When I have the choice, Java will not be used by me or anyone that answers to me for future work. There are simply too many excellent alternatives available today to suffer Oracle and its hostile nature. Everyone I know with similar influence feels the same. The question is; how many years and how much decline must be suffered before Oracle figures out that Java needs us and our good will more than we need Java?
Lurking at the bottom of the gravity well, getting old
All depends on what you're doing with it. I work on an enterprise level webapp written 100% in java and we have deployments on Windows, Linux, Solaris and OSX-Server using the EXACT same code base and this is an app with over 1000 classes and 250k+ lines of code.
But Java went on to run back-end server and enterprise systems, and there it really doesn't matter because people engineer for specific hardware.
Actually, that's precisely where I see the "write once run anywhere" in action. I have been developing server-side code for about a decade, and I have always done my development and testing on Windows, but deployed to either Linux or Solaris, without any platform problems whatsoever.
Yes, there are exceptions. There's still some "run anywhere" exploited on the desktop - e.g., Crashplan's desktop GUI. But most companies who are doing Java at any scale are doing it on specific hardware - i.e., their backend processing system runs on x86, SPARC, POWER, or whatever and so who cares if they could pick up the Java code and move it? They're never going to.
All the companies who bought Itanium beg to differ.
Breakfast served all day!
Not sure what it was like in the days of 1.1 and 1.2, but ever since 1.4 you have had the option of running multiple JVMs, or even private ones.
Vendors should fix their code (esp. the one that can't run on a higher version) - but even if they screw up, which is hardly Java's fault, there is still a way around that.
Speaking from current experience (porting a large codebase which includes several languages, including Java and C++), this is generally true. But that doesn't stop people from doing really stupid things.
For example, previous developers on the code I'm working with decided to use Runtime.exec() everywhere. Need to copy a file? Try running 'cp' ... and be sure to hard-code the path where you think it will exist. Need a directory listing? Call 'ls' ... and be sure to rely on a specific output format for error messages. I have many more examples.
This isn't a Java problem, because Java provides a native mechanism that isn't being used. And, to give credit to Java, at least it's generally pretty obvious what will break on other platforms, and most of that will be encapsulated into JNI or the like.
Java is "write once, run anywhere" if you think about cross-platform compatibility as you're coding. But, the same could be said for most languages, including C and C++ (with Java being a bit better).
Right. So we should all believe that Oracle now wants a world of good for us.
... and pissing the entire customer base off.
Meanwhile the legal rampage against free and open source software continues. The war against Android - once the pride of Sun's success with Java - is raging.
Oh, and don't even get me started on the crapware Ask-Toolbar they started pushing with the Java update/installer, with the "Yes put crapware on my system" option pre-selected for me...
Yes, Oracle is certainly doing a lot of things for Java. Like killing it
- Jesper
My security clearance is so high I have to kill myself if I remember I have it...
IMHO, the involvement of Oracle would be enough to make me avoid Java even if I liked the language. Developing applications is stressful enough without having to worry about what Larry Ellison might do.
And I don't like the language either. The nature of its widespread use only strengthens my feeling it is the 'new' BASIC, a dead-end educational toy that is used far beyond its capacities. Worse, this has gone on long enough for its oversimplified world view to affect what often masquerades as "design". Stitching together great steaming piles of independently mutating libraries doesn't seem to produce good applications, does it?
A couple more things to preempt the fanbois:
No, Java is not fast. Java is a programming language. Virualized RISC machines can be fast within their own arenas and a lot of good work has gone into JIT compilers and the machines running underneath "Java". The claim does nothing but reveal your lack of knowledge and perspective.
And no, grunting out low-content scripts for a few years does not make anyone a designer or an architect. Building kludged-together boxes using Lego blocks doesn't make you a civil engineer or an architect either.
Bent, folded, spindled, and mutilated.
Because, to me what you are looking for is :
http://docs.oracle.com/javase/6/docs/api/javax/swing/filechooser/FileView.html
There since Java 2 (aka 1.2), means there since 1998 ;-)
Do you have other limitations like this ? :P ... the only limit is get the doc or couple of libs.
There is nothing I can not do in Java
Rgs
TM
They have single handedly destroyed the fragile Java value proposition in two short years,
without constant good targeted marketing the PHBs in the Enterprise will move to the
next new (thing|heap-of-crap).
MFG, omb
Java fanbois out in force! Did one of you really just down-vote an anonymous coward post about someone escaping java plugin security risk hell? I think somebody's mortgage must depend on this language that a lot of people just got nervous about being invested in.
We used to joke "write once run away".
I have been developing server-side code for about a decade, and I have always done my development and testing on Windows, but deployed to either Linux or Solaris, without any platform problems whatsoever.
I find that a little scary.
But I'm curious. Do you do that because as a developer you find Windows more productive for you?
Seriously, unless you are doing something weird, reasonably OK written java app would run under any platform. There might be some small issues, but cross-platform apps with Java are much much much easier to write than cross-platform apps with anything else.
Sure. If I'm writing an email client or something. But if I'm composing a complex system, then there are performance and functional characteristics that vary, and these could very well make or break the product. I appreciate the desire to defer architectural decisions to the last responsible moment. But picking the OS can drive so many other design decisions, that one should get that right almost from the beginning.
With Java predominantly on the server side instead of in the browser, what exactly is the use case that WORA is supposed to solve? Or put another way, who is writing cross-platform apps?
But that doesn't stop people from doing really stupid things.
Oh, I hear that. The stories we could tell over beers!
But even when using Java's "native mechanism", things like filename case sensitivity can still bite you. And here's another example. When I start a Java thread, does that run in the same OS process or not? And if the answer is "that depends", then that has some serious implications for availability, testing, and even security.
Stroustrup famously quipped that Java is not platform independent -- it's a platform.
a lot of companies who bought Sparc also are begging. And Alpha, for that matter, some major financial and municipal operations still on that platform.
not my experience at all, seen some companies have major data center deployment train wrecks of j2ee apps because of windows development environment completely different from mainframe or big Unix iron. From directory structure and file naming, to permissions and ownership, to date/time....the list goes on and on. Developers need to understand and work on the target platforms, and any java developer for "big iron" that can only function on a windows box is fit only to be cut up for chum.
Why do you find it scary? It's rather common in my experience that dev teams have different development platforms from the target runtime.
Don't find it scary, this is pretty much what every Java dev working on server side/web app code does. I have also been doing it for years.
The problem here is perception of Java, Java as desktop app is to be blunt problematic and idiot devs out there who don't know what they are doing. Java on the server is an absolute dream.
Windows isn't any more productive then say Linux or OSX its just convenient because most people use stuff like Outlook/Project/Visio etc.
This guy gets it. I also code Java in flavors of Windows personally and professionally. I gave up client-side Java Applets 5 years ago because it's a mess and if users were smart, would remove the Java plugin from their systems as it is a vector for hacks.
The latest stuff in Swing isn't bad - Sparx Enterprise Architect is a beautiful app written in client-side java, I believe.
Java on the server is an absolute dream: performs great, super secure, super reliable. Serve your web apps in Java, for Christ's sakes!
The bug-a-boo I always hear the haters spouting about path separators on different platforms is easily solvable in a WORA way. Just get savvy with java.io.File and build up your paths one folder/file name at a time using the File(File parent, String child)
When will people learn Java on the server is the BEST?!
With Java predominantly on the server side instead of in the browser, what exactly is the use case that WORA is supposed to solve? Or put another way, who is writing cross-platform apps?
From a person who actually writes java apps for living, not by reading slashdot: it is VERY useful. It allows me to run the server-side code which used to be deployed on Solaris/SPARC on my Windows/x86 box for quick development/debugging. And guess what? When we upgraded to Solaris/x86 AND Linux/x86, we had to do a bit of performance testing, but only real problems were with a native library we had to use - because the C++ guys porting it have assumed that gcc STL works the same way as CC STL... Half million lines of non-trivial multithreaded java code which is handling billions of EUR daily and not a single code change required because of the OS/cpu change.
The gui itself was written in Swing and running on Windows. Somebody asked for Linux version. It was not painless, because I was using some extra native libraries for window transparency and some custom L&F extensions - but again, within 2 days of work, gui was working on Linux. Yes, it had ugly corners on rounded tabs (because I was missing transparency lib for Linux) and I have spent few hard hours debugging and fixing some focus events behaving differently - but absolute majority of the app just worked.
Yes, for all the drones coding HTML pages, WORA doesn't matter. For people doing standalone server apps, it does a lot.
Is it the case that until Android came around, Java, the language, the libraries and the VM collectively known as "Java" was write once run everywhere platform?
I was there. It was never, ever that way. You couldn't even run multiple java apps on the same computer, because one service provider would only run under and support (made up version) 1.1 and another would only run under and support (made up version) 1.2 and they'd crash horrifically on each other's version. So you'd have workers with two PCs on their desk because they need access to both apps. It was just a nightmare.
It was supposed to be multi-platform across anything, but it wasn't even as inter-compatible as windows. Ugh.
Things may have improved in the last decade or so, but in the olden days it was horrific.
You do realize, don't you, that what you are describing is a situation that was created by Microsoft (to "embrace and extend" Java) and was at least part of the basis for Sun's lawsuit against them, right? That said, I do see vendors doing stupid crap like this still, improperly written applet tags/jnlp files or (for kriseakes) still requiring JInitiator (I'm looking at you FAMIS). Any company that creates a Windows-only Java applet deserves to die of acute, concurrent syphilis+gonorrhea+dysentery. If you are going to make it Windows only, just make it a damn Windows application in C++ or C# or whatever and stop trying to embed it in a friggin' web page.
We've done it both ways. Servers are all Linux. Dev workstations were Linux the last 6 years or so but the last round of Ubuntu UI stupidity made me bite the bullet and switch back to Windows (we have several Windows only apps that we require that ran under vms, the UI was just the tipping point). We have had zero issues switching between dev platforms and I have to say, unfortunately, that Linux seems to run better under Virtual Box on Windows than Windows did under KVM on Linux.
<rant>I would love to be Windows free but honestly, and it pains me to say this, the Windows 7 UI is infinitely better that Gnome. It is on par with KDE from an interface standpoint, but the KDE team seems obsessed with turning my operating system into some @#$#@ twitter/facebook/etsy love child. I don't need 50% of my CPU cycles dedicated to tagging files in my file system thank you very much. I know what the files are. I know where they are, I put them there. Now get back to making drop shadows and reflections. We switched back to Windows because we find it to be less resource intensive than KDE, a fact that I hope disturbs the KDE devs as much as it does me.</rant>
Do you do that because as a developer you find Windows more productive for you?
In my experience, IDEs run roughly the same on Windows as on Linux. Not a lot of difference here.
The reasons for developing on Windows are mainly:
WWTTD?
but it's fine if you're running Linux in a vm under Windows to verify proper function, that's not the type of situation I've seen make trouble.