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.'"
There are some pretty cool developments going on in Java lately, e.g. LINQ, functions and reified generics. Why wait for the JCP when there are enough mad people out there who will implement all the tools that Java is perceived to lack? See for example: https://github.com/nicholas22/jpropel-light
Just make sure the Java plugin doesn't hang browsers anymore or make them sluggish!
I hate it when visiting a academical website that has the well-meant intention to show some mathematical principle using a Java applet, but instead Firefox hangs while loading it... I'm not sure if it's the fault of Firefox or the Java plugin, but no matter what, it doesn't help Java.
Flash can do it, why not Java?
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.
http://www.youtube.com/watch?v=b-Cr0EWwaTk
I've spent quite a bit of effort over the last two months removing Java from all of my clients' computers. I've seen it used as an attack vector far too often and it was time for Java to go. I've even got some - but not all - of my clients to let me remove Flash and Acrobat Reader. In the long run it's safer for them, and cheaper for them too.
Why is it that every Java story on Slashdot is infected by an IT Admin Monkey telling us that he's removing Java from his "users" machines. If these IT monkeys really wanted to remove the most targeted attack vector from their "users" machines they would replace "Windows" with something secure.
> 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.
Cross-platform is a big feature point of Java and the I am sure that the memory usage problem is solvable, thought I am yet to see any real move from Oracle.
For me the biggest problem when it comes to desktop applications is the requirement that all UI elements must be coded. This means that every IDE codes their UIs in ways that other tools can't leverage. If Oracle wants Java to be serious on the desktop, then I believe they need some sort of markup for easily designing UIs, without having to resort to code. The code should only be there for the functional aspects. Microsoft has achieved this and so has Apple (NIBs). It would be nice to see Java benefit from something similar too.
I must admit I took a crack at trying to create such a tool, but it is a lot of work to get right and for it work the format needs to be documented properly.
Jumpstart the tartan drive.
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.
Pretty much this.
Even though C# fanboys like to bash Eclipse and Java, they just don't suck badly enough. Yeah, Eclipse needs a GUI designer and it would nice to have delegates/events ala C#, but the workarounds are not that bad to tie yourself to MS. Java gained most momentum in the years when you needed a serial number even to install (!!!) the MSDN documentation from a CD. If it weren't for Java we wouldn't have stuff like Visual $language Express for free.
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.
I don't think its too late, though they have a lot of work in front of them AWT failed because it was limited in its platform integration and Swing because it really didn't feel like it was intended for any specific platform with a lot of the important UI hooks missing.
The best solution so far has been SWT, IMHO, though I am yet to see any small applications, since they all seems to follow the same UI design approach as Eclipse and tend to feel rather heavy. It would be nice to see SWT as a UI extension that is bundled with the standard OpenJDK.
Getting a good cross-platform UI solution is no easy feat, given all the different expectations of uses on different platforms. There are solutions out there, but they all succeed and fail for different reasons.
Jumpstart the tartan drive.
They're a business, not a charity. They want Java on mobile if they can get part of the profits.
Dilbert RSS feed
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.
Java is cross-platform enough for our professional use - development on Windows, deployment on a mix of Solaris SPARC, Solaris x86, Debian, RHEL and Ubuntu Server. It really does Just Work, and well enough for actual money-making activities (niche professional publishing for paid subscribers, in this case) if you keep to pure Java.
http://rocknerd.co.uk
If they really wanted to make their machines secure, they'd remove the users. Unfortunately, IT is never told to make the network secure, they are told to make it secure and usable. Uninstalling Windows typically means rewriting a large amount of Windows-only code, or at least doing exhaustive testing of it in WINE, and that's beyond the budget of most IT departments.
I am TheRaven on Soylent News
Same for me...and I code in Java for work on a daily basis.
The thing is, Java as a language/development platform has had everything I need and use for many years now. Sun (and now Oracle) have failed miserably to offer a compelling developer proposition outside of the core language and API. The EJB debacle just showed how much the Java community, and not Sun/Oracle, is driving the Java innovations that are actually useful.
What Java needs (and won't get, because there's no money for Oracle in it) is for Oracle to focus on improving the core VM and cleaning up the core APIs. On the VM side, they need to clean up class hierarchies and dependencies so that VM doesn't need to load so many classes at startup. On the API side, JSRs like 310 (Date/Time API) are needed to replace parts of the Java API that, quite frankly, suck. AWT and Swing are simply not as good as alternatives like SWT...I'd like to see Oracle deprecate them and work with IBM to include SWT in the core Java distribution. In the enterprise space, the only part of J2EE that I find compelling is the servlet spec, and even that needs a serious cleanup. JSP needs to be deprecated in favor of 3rd party tools like Freemarker, Velocity or any other templating language that encourages a stricter separation between presentation and business logic and does not require a container to evaluate and test.
For everything else, Oracle should let the community push the platform. The most useful parts of the Java platform have come from groups like Apache, Spring, IBM, Google and Redhat. The last time there were advances in the JDK or J2EE that actually affect my current work was in 2004 when Java 5 added many significant language features. So I've basically stopped paying attention to Java, the Oracle product, and anything Oracle has to say about Java and now only focus on what they community plans for it.
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.
FTA: That means JavaFX is now supported on any device that offers a JVM.
Bzzt. Thanks for playing. There is one extremely important class of device that does not and will not ever offer a JVM.
In the course of every project, it will become necessary to shoot the scientists and begin production.
Meanwhile it continues to power the backend of countless websites and systems you take advantage of day to day from your bank to your supermarkets stock control system to eBay and Google, to any smart features you may have on your TV or set top box.
And really, that's the beauty about Java, it doesn't matter if people like you care about it or not, it'll still continue to sit happily working away solving countless problems across the globe.
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.
Hm... Maybe because we actually deliver those applications?
it would nice to have delegates/events ala C#
Complaining that Java doesn't have delegates compared to C# is so 2002. These days, the list would include reified efficient generics (no boxing for value types and separate codegen), lambdas, sequence comprehensions (LINQ), generator methods (yield), opt-in duck typing, and a dozen more minor things.
.NET and C# pretty much took over Java. 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!) and Java development is light years behind .NET and C#.
You live in a small, closed world. Glad if works for you. As long as you stay on MS desktops and friends it probably works OK. But for mobile, web and other stuff that is happening, it kinda sucks. The biggest problem with Visual Studio is its a MS product. Which means you get locked into the (inferior) MS world. Not to mention the inevitable bloat and odd behaviors, etc that seem to come with any MS desktop product.
Before commenting, I have programmed in both, but they are not my primary langs.
1) .NET is not light weight, the HD size of the framework is huge, 300meg+ . Ram usage is hard to guage because its a grey line between .NET and Windows resources.
2) besides ram, what other resources does java use? I know it likes to pre allocate ram, but it doesnt hard reserve the ram, so its not really that hungry. I want some real analysis done. Like how much ram is used between languages for say 1 million nodes in an array, or list, or hash,directory map.
One thing I did find weak in .NET was audio control, well something like volume control. Where is the one liner?
To me, its not so much the language, its the framework toolkits/apis to the OS or libraries which are more important.
But now both language are owned by two evil corps. So that sucks.
Liberty freedom are no1, not dicks in suits.
what's this "feels heavy" that can not possibly be from a user POV, I've never heard a user talk about how heavy an app is!
secondly what in the 3 monkeys do you mean by missing important UI hooks, like what ? html has very simple UI and look at gmail / gdocs. tell me a bit more about the important hooks vs say html or flash. or is that another "feeling"
.NET and C# pretty much took over Java.
No, I think .NET is losing relevance as Windows does the same.
Sure, Java supports more platforms,
It's easy to support more than ONE platform, since .NET only runs properly on Windows.
but it's resource and memory hog,
Benchmarks show that Java runs much faster than .NET.
insecure (there's tons of Java exploits out there but none for .NET!)
That's why my Windows Update log shows I have 9 "critical security updates" for the two .NET frameworks I have installed in my Windows machine. And by the way, I don't see why I need to have more than one version of .NET installed at the same time, and why .NET updates have to be so heavy. 40 megabytes for a single security patch?
and Java development is light years behind .NET and C#.
The appeal of Java comes from the fact that it's not an academic language, it's a blue-collar one. This means that Java code is meant to be readable and predictable, but it needs more boilerplate lines. If you want the latest computer science features, you might look at the new languages built on the JVM, such as Scala. C# development is light years behind Scala.
On the other .NET is really lightweight, fast and C# as a language is fast and easy,
Benchmarks tell a different story. And in my personal experience, .NET applications are slow. Cold-starting the Catalyst Control Panel on the Core i7 laptop I'm writing on takes something like ten seconds, during which no progress indicator is shown. The old ATI Control Panel, which wasn't .NET-based, launched instantly.
You also get access to some devices that Java doesn't support
Java supports the same devices as the underlying OS. Of course, doing that kills the program portability. Which is something one wouldn't worry about when coding in .NET, since .NET runs with full functionality on Windows only.
and comprehensive libraries like XNA.
Java's immense software library, much of which is shipped by default in the 20 MB Java installation, is one of its strongest selling points.
If you wanted to make a game, you could code for all Windows, Linux (Mono, even if its sometimes lagging behind on new features), Windows Phone 7 and Xbox360 all at once.
Or you could code it in OpenGL, and it would run on Windows, Linux, Mac OS, Android, Symbian, iOS, HTML5 browsers, and non-Microsoft game consoles.
And Mono lags _years_ behind on new features, doesn't implement key ones such as WPF, and is slow. I've never seen it run flawlessly a .NET application that wasn't written specifically for it.
Also, Visual Studio is much better development IDE than any other.
Nah. Netbeans is better, and is free as in freedom. No ripped-down, "first dose for free" versions needed. Then there's Eclipse which is free, too. And IntelliJ which is commercially supported.
Java the platform gives you everything you need to write portable code. It can't prevent people from writing code that isn't portable.