Oracle's Ambitious Plan For Client-Side Java
snydeq writes "Fatal Exception's Neil McAllister suggests that the real news out of this year's JavaOne is Oracle's ambitious plan to revitalize Java on the desktop, the Web, and mobile devices. 'It's been tempting to assume that Oracle, with its strong enterprise focus, would ignore the client in favor of data center technologies such as Java EE. This week, we learned that's not the case. In fact, the real news from this year's JavaOne conference in San Francisco may not be Oracle's plans for Java 8 and 9, but the revelation that Oracle is gearing up for a new, sustained push behind Java for the desktop, the Web, and mobile devices. If it can succeed in its ambitious plans, the age of client-side Java could be just beginning.'"
I have a set of systems I am building that are used by a store chain. It's my line of products, one of the components is a store management system that is used in the stores. Every piece is server/client, but in this component the client is a Java swing application that also can be used as an applet (that's the good part about Java, with minimum work you can have it working as an applet if it works as an application.)
So I know that most people on /. are derisive about such solutions, but I am moving the stores from Window platform to GNU/Linux (Ubuntu actually). Of-course it's possible to build everything in C and C++, etc., but when the entire solution is java with every component on every server / client, even though most clients here are thin, that run in a browser of choice, using Java as a client is really the most logical thing.
Every component is compatible with each other, the communications between components are all built in exactly the same manner, be it a server-server or server-full client.
The important thing is that moving from Windows to GNU/Linux is easier, because the look and feel stays almost the same.
The one real problem for me is actually some driver for certain types of devices, like zebra thermal printers and such, but that's not a problem with Java itself, that was a problem with moving the clients from Windows to GNU/Linux (haven't figured this out yet, so one of the computers in stores is still Windows, because the configuration and font setup software supplied with the Zebra printers is for Windows.)
I can accept the hate, that the Java solution may not be wonderful or uber-cool or whatever the current feelings are about what people hate today, but the point is that it's working. If I couldn't get it to work, I would have had no choice but to go with something else, but that would require extra work, to get it all communicating with the server sides, that are Java based.
The speed of this application totally depends on the data model, database work, algorithms and communications, but the Java GUIs themselves are not presenting any major problems. If I want to, I can even style the main frame of the window with anything, any kind of graphic that doesn't look like a normal window, this works with JNI, but I don't really need that in this project.
I have used this in a browser as an applet and I have used this to communicate over the Internet, not just within the stores themselves, which is an interesting feature.
So can somebody tell me what they think I should be on a look out for here? Is Java going to blow the fuses or are the tables going to catch on fire?
You can't handle the truth.
> resource and memory hog
Got anything to show it's worse than .Net?
> there's tons of Java exploits out there but none for .NET
What, language-level exploits in Java? Care to give an example?
> Java development is light years behind .NET and C#.
Erm. Hey, quick, distraction! Behind you! *runs*
Seriously though, yes Java lags behind in features. Cross-platform development; Java runs on Windows, Linux, the BSDs, Blackberry phones, Android (well, it's a close varient) and frankly pretty much everything else too. I'll admit game development in Java is decidedly mixed (I believe, anyway, have never tried it myself).
Ultimately, there's a lot of code out there in Java, and it's not at all a bad platform, the world does not move on just because something a bit better comes out.
Google was the best bet in bringing Java back to life.
But Oracle is suing Google for making Java somewhat popular again ...
I imagine even Google will give up on Java at some point with some new platform that exposes binder services to javascript, deprecates Java, and merges with Chrome OS.
"Sure, Java supports more platforms, but it's resource and memory hog, insecure (there's tons of Java exploits out there but none for .NET!)..."
Since installing Windows 7 (about a week back) I've had to apply more than 8-10 patches for .NET "security vulnerabilities" and "exploits" already.
First, you would have to get every vendor to agree to this. Not a single one will. Oracle has spent time making enemies of most people required for such a plan to succeed, and their mission statement completely conflicts with the goals of the rest of the people that would be needed.
Oracle has been too confrontational with Google to get their help on anything that would advance Oracle's motives.
Since Oracle's angle is in effect reducing platform differentiation, Microsoft and Apple are not about to give them the time of day as success would simply erode whatever value they could possibly construct.
Open source communities have been sufficiently alienated by Oracle's goings on that they don't have a prayer in Firefox or other open source browsers either.
Combine this political obstacle with the simple fact that there isn't a large need to be filled. Between Flash and Javascript+HTML5, there isn't much to add to the web experience and for things like smartphone and desktop applications, the respective vendors have it too good right now in their walled gardens to relinquish control.
This didn't happen in the late 90s/early 2000s, and it's not going to happen now.
XML is like violence. If it doesn't solve the problem, use more.
"Sure, Java supports more platforms, but it's resource and memory hog, insecure (there's tons of Java exploits out there but none for .NET!)..."
Since installing Windows 7 (about a week back) I've had to apply more than 8-10 patches for .NET "security vulnerabilities" and "exploits" already.
No way. Tech4 said it was the only completely secure software ever written so it must be true.
Brilliant, now try making it run on OpenBSD. Too weird? How about OS X?
Well done, you used a tool appropriate to the job, and got a good result. I've written C# apps to integrate with MS Office, platform-agnostic server apps in Java, high performance stuff in C, text processing tools in Perl and text adventures in Inform. In all cases, the language fitted what I wanted to do, well, but that doesn't make it inherently better than another language in some grand scheme of things.
Why all the freakishly negative comments about one of the best languages to come along in a while? Super blazingly fast and fun to program. No, it's not ruby or python, but then again those languages are slow as thick shit in comparison. Anyway, if Java is going to succeed on the desktop it has to be possible to write apps which don't take up 500M of RAM, like Eclipse for example. That thing uses 500M of real memory for what!? Displaying a UI, edit three or four files, a console window ... I mean, this is 500M we're talking about. I blame Swing and the fact that its components are based on AWT Component, which is a huge memory hog with about 60 instance variables - holy cow, I thought I was exaggerating but it's close enough (53 + 13 because JComponent extends Container not Component). 66 * 8 = 512 bytes although not all elements are pointers I admit. Awesome! (not).
I wonder if things would have been different if they didn't completely screw up Swing. AWT was done in about a week in 1995, it's OK that it wasn't perfect. But there is no excuse for Swing to suck so badly.
I'm no fan of Java, but I run into it all the time.
On the other .NET is really lightweight,
So far as I have seen, most of the *appearance* of lightweight is achieved through preload. Conversely, most of the criticism of Java as bloated stems from a decade old impression and crappy app coders.
.You also get access to some devices that Java doesn't support
This is mostly a natural consequence of supporting many platforms. Platforms aren't different just for the fun of it, and supporting them all means mostly settling for the subset of ubiquitous capability. This applies to most scripting languages as well, though those typically get extended by platform-specific modules as they don't carry the stigma of being Java.
Also, Visual Studio is much better development IDE than any other.
Maybe for medium/large projects, but for quick stuff I still haven't found an IDE I like after trying visual studio/eclipse/etc/etc. Nothing beats vim and a compiler sometimes.
XML is like violence. If it doesn't solve the problem, use more.
If these IT monkeys really wanted to remove the most targeted attack vector from their "users" machines they would replace "Windows" with something secure.
Actually if they wanted to remove the most targeted attack vector they would remove the users from the machines.
You are entitled to your own opinions, not your own facts.
Yeah, my sysadmin went a step further and unplugged the Internet from the wall. He said that it was being used as an attack vector far too often, and it was time for the this ridiculous "Internet" thingy to go. In the long run, it's been safer, and cheaper for me too!
um, i know it's being said quite a lot, already, but it's worth repeating: java's pretty much dead on the desktop. people are even replacing Flash applications with HTML5, as it's reaching high market share and maturity, especially now that IE9 has actually better (read "stricter") HTML5 compliance than the Free Software equivalents. how in god's name is oracle expecting to break into that?
the other thing that's worth emphasising is that when you have alternative language bindings to HTML5, you get the best of both worlds. so... why doesn't oracle put its money behind getting java bindings (or, better "generic" bindings like DCOM and XPCOM) on top of HTML5 browser engines? with Trident (the engine behind MSHTML aka IE) that's a done deal already: Trident (MSHTML.DLL and MSXML.DLL) already *has* DCOM bindings so it's a matter of about 2-3 weeks to get something like that up-and-running. XPCOM (XulRunner) is a little trickier: you'd have to find or create java bindings to XPCOM (they don't exist afaik) and the hardest (technically speaking) is webkit (used in android, safari, ipphon etc.)
then you have literally the best of both worlds. HTML5 as the "front-end", and whatever-language-you-choose to control and direct it. btw this is exactly what's been done for the pyjamas project (http://pyjs.org) except using python not java.
SWT is awful. At least Swing is pretty clean, and logical. SWT is often utterly insane - look inside the code for proof of that. Swing is also totally extensible. SWT is not (the number of classes that state the class is not final but must not be extended is quite impressive). I say this as someone working on a small (450k semicolons) SWT/RCP application which integrates components written in Swing, JOGL and Processing.org.
However application developers usually aren't happy with "basic hardware support", they want to OpenGL, H264 hardware acceleration, want to access webcam, microphone etc. Pure ANSI C is fine and dandy, but the real power comes from the (cross-platform) libraries, and that's what Java/Python/C# got right. People want batteries included.