This content has been marked as final. Show 182 replies
Hi, sorry for coming back late to the report, I was exhausted after JavaOne, had a long flight home and then jump straight back into work where I am still struggling writing my duty travel trip report.
As some said before in this thread, unlike last year, there were little to no word from Oracle people about Java and JavaFX running on iOS (or even on Windows Mobile or "That other Linux platform" for that matter). We just heard a quite "Oracle ADF Mobile is now available" at some point and nothing else...
The session +"CON7488 - Java deployment on Mac OS X"+ ended with someone from the audience asking:
+"Ok, great, I can have the same Java app running on Mac OS and Windows, do native bundle for Mac... What about iOS?"+
and the very formal answer was:
+"Not currently, Oracle Management may decide to release some tools if and when they see fit depending on the need of the market".+
On the other hand, Codename One's sessions +"CON2539 - Mobile WORA for real: Java for iOS, Android, BlackBerry, Windows and JavaME"+ and +"TUT10107 - Building native iPhone/iPad applications in Java"+ both had the room full of people with some more non-registered queuing outside and trying to get a seat in the room. So it's look like there is serious demand, beside the "it's cool factor".
So in the mean time, I'd suggest you have a look at Codename One's slides and audio tracks from the JavaOne Website, check out their tools (free of charge), various pricing options (range from free to $9 per month). But this means using Codename One's API and you cannot use FX.
EDIT: there was a session about Metro but I did not attended to it. Also Metro graphic style is very easy to match with CSS. At some point during one of the session, someone (I do not remember who but i think it was during the +"Meet the AWT, Java2D and Swing Team"+ ) mentionned that future JavaFX version may have support for Windows 8 Metro app running style (vs. Swing not being updated anymore will only work in desktop mode on Windows 8). But those were just quick words not from the FX team so take them with a grain of salt.
Edited by: bouye on Oct 10, 2012 11:56 AM
one year ago i thought that i was seeing something really awesome is coming up with javafx... i thought "wow, i do see what oracle's visions are - this is such a great technology"
i'm doing an apprenticeship as a softaware developer and i'm going to do a presentation about a topic of my favour - i was thinking about javaFx, because i know that most people in my company probably dont know javaFx (maybe never heard of it or don't see the power behind that technology) ... this would have become a great presentation full of convincement..
especially now that i have to learn what's behind dynamic web pages / apps (javaserver faces etc)... there are sooo many ways how to create web applications that it's hard to get an overview on what's the best and which technologys compete with each others... the'yre all overlapping and each for itself is relatively hard to become familiar with.
... i haven't found the time for presenting javafx... but i know that i would have presented with many vigor (dash?!) . One big thing would have been the results of my reasearches about javafx on ios / android...
man this would've been ugly/embarrassing telling them that i was talking bullshit, now that after i heard the newest announcements from oracle that javafx won#t be coupled with the jvm
now i don't even know if there are some reasons left choosing "javafx" as my topic..
these news really ruined my world (maybe i'm a bit exaggerating :p) but after 2 years of interests in javafx, everything i've read / learned comes to nothing in the end !?
one last question : if "no javafx on android / ios" really is ur last word - what are you guys from oracle recommend me for a good topic for my presentation - > do i have to educate myself in 4-5 different technologys what could have been done by just learning the javafx api ?
oh.. one more: if it's not a technical problem to what speaks against it's implementation ? What are your fears ? a bad reputation from ...who knows .. ?! wayne !?
maybe i just don't have the "big picture" and i'm missing some points, so that you cann say " oh look this naive young developer" - but hey: just tell me what am i missing and i'll shut up
i just don't get
Yeah welcome to software development in the 21st century. Its a fast moving target which only those who are adaptable and with sharp wits can stay on top of.
This is partly an answer to the question on what topics are currently good to look at in the Java space, but also a summary of how I feel (which may or may not be representative of others) on the state of JavaFX in the distributed enterprise application space (sometimes called "back-office" apps, "serious Java apps", and loosely falling under the "ERP" banner).
For the record, these are my opinions only. They are my own personal assessment of the current state of play based on my own experiences using both JFX and its major competitors in this space. It was written to help a friend (i.e. I had his genuine best interest in heart and no other bias). No doubt some will (quietly) agree and others (passionately) disagree. As ever, take of it what you will and make up your own minds. I have no alliance to any company, platform, product or vendor - Oracle or otherwise. I'm a 100% freelancer developer who has been working in this "enterprise" space for roughly 12 years. My only bias is towards happy users and simplified development of maintainable system with rich, intuitive user interfaces.
Below is an email I sent to a friend of mine after he asked me what technologies I would currently recommend for his latest project. He knew I was a JavaFX fan with a fair bit of experience in this area (see http://zenjava.com/) and he was quite interested in knowing whether I thought JavaFX was a good fit for his project.
I wrote this response about a month ago, before this latest back away from mobile. Note that in this enterprise space, "mobile" (in particular tablets) is just another platform that we have to run on, like Windows and Mac (Linux is generally seen as a nice to have by most enterprises I work for - too small a business driver). As such I think this conversation on mobile is all tied in with the bigger conversation on "enterprise" support and JFX vs webapps. This latest back-off from mobile would only strengthen my opinion below.
From your description, I think you don't want JavaFX unless you need some hard core desktop type UI (i.e. something you genuinely can't do with web, which is not much these days). Unfortunately Oracle can't get their **** together to sort out the deployment/distribution side of things so for use in your typical business app JFX is at least a year away from being a contender (and may only ever be good for niche "power-desktop" apps unless they lift their game).
My (dwindling) hope is that Java 8 may address some of these issues, but deployment is kind of the elephant in the room. There was a bit of energy put into a "native" installer, but in it's current form it is still too messy to be practical. Until they sort this out, I'd say give JFX a miss in this space for now. You can check back with me after the release of Java 8 but I reckon you don't want to wait that long and it's 50-50 whether things will be better then anyway.
In web land, the tech I would recommend you first get familiar with is 'Twitter Bootstrap'. The name is misleading it's a HTML+CSS+JScript base library for building clean UIs and not actually doing anything with "Twitter". This combined with JQuery is the best recent development in web front end and massively improves the developer and user experience, not to mention minimizing a lot of the cross-browser problems of the past.
For the rest of the stack, I would suggest:
- JQuery (use sparingly when bootstrap is not enough)
- JQuery mobile
- Spring Security
- Spring Transactions
- Spring Data (JPA + Hibernate)
- Subversion or GIT (check out BitBucket or Assembla, but there are plenty of other hosts)
- Eclipse or IntelliJ IDEA Ultimate (I use IntelliJ and it's awesome but is a paid for licence)
I've been using Google Closure Templates, combined with https://github.com/tomakehurst/spring-closure-templates which is a nicer syntax than JSP and has benefits in that it can compile templates to JScript (which further reduces cross-browser JScript issues). It's all a bit raw still though so you might want to stick with JSPs and Apache Tiles (painful but established).
I'd suggest JUnit and a mocking framework for unit testing but I imagine you won't care about testing in the immediate term (you should, but you won't, no one ever does).
If you need full blown, cross table text searching then check out Solr.
There are also emerging NoSql databases to replace the data tier. These look promising and over the next couple of years might be fully mainstream. Currently I find them a bit under cooked for clean integration/use but it's definitely an area to watch.
Hope that helps, give me a shout if you need more info,
I have just one question: Why does people from Oracle are not allowed to say anything about "JavaFX2 on iOS"???? What is the big problem???
We spoke about this topic a few month ago: JavaFX2 on iOS - embedding JRE inside iOS app - JNI support?
Edited by: Tobi on 12.10.2012 02:04
I doubt that any of the major players has an interest in that. They have their own systems and they want to dinstinguish themselves from the competition. A unified development environment is simply not what they want. The only chance I see is that some other organization does it which does not have a system of their own.
jsmith wrote:I'd say more people are hurt in their wallets by that than people actually benefit from it. Nice for devs maybe, but when has that ever been a reason to make a decision?
Is there a chance, once JavaFX is open sourced, that a major player would do the port of the runtime to their system, e.g. Microsoft to Metro, Apple to iOS or Google to Android? Would anybody want that?
My opinion is that Oracle has a bit of catching up to do giving Java a good name again among the regular users; make it better for the platforms it is already available for. Focus on security, get JavaFX to the point where it is a good tool for easy game and "app" development, vastly improve the ease of deployment and bring the size and resource usage further down. Once its considered cool again to use, perhaps then it can branch out to the platforms which are at that point hot stuff, which may not be smartphones and tablets anymore by then... For now: Java works just fine in server environments and that is also where Oracle has the most to benefit from it. Its important that this keeps on improving steadily, so I look more towards JEE7 than Java 8 to be honest.
The lack of perspective here is staggering. Maybe it's just because I'm an old guy that I have a different view.
When Swing was announced at the second or third Java One in the mid 90's, Sun really thought it was the be-all end-all. I had the opposite opinion - Swing's underlying technology of trying to emulate the look and feel of Windows and Mac OS was destined to be second best - at very best. My prognosis then turned out to be correct. Swing sucks. Always has.
As another poster said, JavaFX is a catch-up product for Oracle for the desktop. From my few months playing with FX 2, it looks like it is a winner for the desktop. Swing will be buried (finally) after a far too long and a mostly useless life.
With respect to iOS - Apple does not want to lose control of the platform/development environment. That's why I suspect there won't be a JavaFX for iOS for a long time, if ever. Technically it's not a problem. I suspect Oracle management would love to provide it for iOS. But the ghost of Steve Jobs will never allow it.
With respect to Android - Google and Oracle mistrust each other a lot, so I suspect the same reasoning holds true as for iOS. However, Google needs a game changer if it wants to ever make any money off of Android, so I could see a JavaFX Android development environment sometime in the next few years. But don't look for it soon. It's a big deal both strategically and technically.
That's my two cents.
I don't think that Apple and Google would prohibit JavaFX bundled apps on their system. Please note that there are already Flex (Adobe/Apache) and MonoTouch bundled apps in the AppStore...
The only thing we have to do is to bring JavaFX and the custom code to one binary file! That's all! Here we need an Ahead-of-Time-Compiler (AOT) (http://en.wikipedia.org/wiki/AOT_compiler) to compile Java code to "native" code because it's not allowed on iOS to use dynamic link libraries.
But there is no technology based problem which Oracle/Sun has shown on JavaOne 2011! Oracle has all needed technology in their labs. But the management of Oracle has currently not decided to bring JavaFX support for iOS, Android and Metro on their official road map!
So what we (the java community) has to do is to convince Oracle of a real (commercial) demand! Please write to Richard Bair or Nicolas Lorain of Oracle. Describe your profile, your use cases, your customers. Tell them why you need JavaFX on mobile phones.
Perspective is exactly what I think is being asked for: what space is it that Oracle sees JFX dominating in?
My original hope (the reason I took up JFX) was that JFX could be used for "business apps" like CRMs, Finance, HR, Sales tracking, Document management, etc? Right now however, web is the better platform in this space. I can outline all the reasons why if you want (trying to find an argument for JFX over web has been my personal quest), but you only have to google each of those business product spaces to see that web dominates in this space. Oracle is itself one of the big players in this space and it is pushing its own HTML+JScript based solution for these rather than JFX.
With mobile (particularly tablets) becoming a rapidly growing platform for business use, there is growing pressure in this space for business apps to work on these. So web is well positioned not just currently but moving forward, whereas JFX seems to have just shot itself in the foot here.
So if JFX is not then intended for your standard business apps (which Oracle appears to be saying), it's obviously not intended for mobile, and it's never really been intended for plain brand web sites (eg nike.com), then that leaves this vague space of "hard core desktop".
So what are these? I'm going to assume people mean things that have very extreme graphics requirements. Ie too extreme for HTML+JScript
Ignoring the future, the use cases right now that might fall under the too hard for web could be:
- image processing apps (photoshop)
- 3D modelling, CAD
- video and audio editing
- live action gaming
Right now, however these would also all fall under the too hard for jfx category too. You would be very hard pressed to do any of the above without dropping through to native calls. The JFX and HTML5 roadmaps are fairly on par for supporting the above things too (ie they both plan to do or not do the same set of features).
Both JavaFX and JScript run in a sandboxed runtime, which grants access to the native OS features. For JFX this is implemented by the JVM whereas for JScript this is implemented by the browser. The 'browser' IS a virtual machine, it's only called a 'browser' because it was named that before it had JScript in it. There is absolutely no technical reason why a JVM can do richer, more performant UIs than a browser. Its merely a question of what the vendors of each choose to provide the sandbox.
The only inherit problem with JScript is that it is an untyped, scripted language whereas JFX is a typed, compiled language. This is the JFX selling point and the reason I want it (and the reason I didn't want jfx script). Everything else is secondary.
Java has the server space, JScript has the client space. These languages are often seen as friends. They're not - they are direct competitors! The only thing they share is a name. JavaFX was my champion for getting java to take over the client space too. I'm pretty sure I've used the phrase "one language to rule them all" a few times. Given oracle's own project avatar is looking to make it easier for JScript to be used in the backend, JScript is looking much better placed to be that language than java.
To be clear I don't like any of this. I am NOT pro JScript (I am it's biggest denouncer). I (really, really) want java in the client. The whole point of taking the time to write this is to point out this just isn't going to happen on our current strategy. We can't seem to get past the stage of accepting we have a problem here. If we could then maybe we could actually turn some of those brilliant mines here on working out a strategy to make that happen. They are the conversations I'd much rather be having right now.