What's the latest on JavaFX and mobile phones? - mobile

What's the latest on JavaFX mobile? I'm having trouble finding any relatively current info regarding what phones (if any..?) are JFX compatible, how to distribute applications to said phones, etc. I have a current desktop application, and another semi-related mobile project is on the horizon (within the next couple months). If I can use JavaFX with minimal pains, that'd be fantastic (to minimize the number of different technologies). My gut says Android or another mobile OS/framework/technology would be the better choice at the moment...
Still trying to wrap my head around the current "reach" of JavaFX. In theory it all sounds fantastic (deskop, mobile, web, blu-ray applications in one go), but it seems to be a ways out from truly being that.
My developing experience has been pleasant so far with JavaFX if it's any consolation... :)

As a fan of JavaFX myself, I was hoping that this years JavaOne (2010) will shed some light on the topic.
Best case scenario for us developers...Larry E convinces Steve J to allow for a JRE on the IPhone.
Worst case scenario for us developers...JavaFX continues its current trajectory toward oblivion.

Related

JavaFX2 and Oracle's plans about mobile operating systems

I'm writting diploma work about JavaFX 2.0, and I need some information about further growth of this technology. I thought it will be super-multi-platform, but after googling I little disappointed: there are a lot of problems with iOS and android, also in the roadmap of JavaFX there are information only about desktop OSs... So, can developers expect some progress of technology in mobile direction? Will JavaFX be desktop-oriented or wide-universal technology? Or, maybe, it will be some special branch "Mobile JavaFX2"? If JavaFX don't support mobile phones development, Oracle will haven't modern and competitive technology for this huge area of developing?... I really need some answers! Thanks!)
If you asked the same question three years ago i would say that javafx has a bright future. Same thing for Silverlight and Adobe Air or flex.
Today i would say just a single word... HTML5
Java will always try to find a seat on the client side... Adobe sucks because they abandoned their flex developers few months ago and who says that it will not happen again with Air?... Microsoft still tries to convince us that silverlight is a good tech while on the other side they promote ASP.NET with ajax capabilities as their main weapon.
See how fast the browsers are struggling to comply with HTML5 (future!!!) standards and you will agree with me that the above technologies were born obsolete.
there are a lot of problems with iOS and android
There are no problems but one - iOS and Android are not supported in the current (JavaFX 2.1) version.
can developers expect some progress of technology in mobile direction?
Not until it is in the public roadmap (which it is not today).
Answering your other questions would just be speculation on the part of anybody who does not know Oracle's private plans. If you are interested in speculation, you can find some here.
This is probably not a direct answer to your question, but i hope it might point you in an alternative direction
Adobe air is architectually very simalar to java. It also runs on a vm on multiple platforms such as windows, osx, and ... Android and IOS. And it's gui's are sexy ... Real eye candy. For mobile there are some considerations, but currently it is the best cross platform language for gui building in my opinion. Not for server side though. But it integrates like a dream with a java server by means of blazeDS or LCDS.
I know that apple has restrictions as set out by their terms and conditions that you are not allowed to run your app in a virtual machine. So adobe had to compile the entire air app as a native application that basically includes the entire air framework. My guess is that oracle is facing similar issues, and that is probably why it is taking some time to roll out
Having fxml with the power of the java language, definately something worth while waiting for and looking forward to it.
HTML 5 has no future.. this tool has lot of problems of it's own..HTML 5 can't be used to develop enterprise applications, it is very difficult to code,debug and maintain which is very important for any long term projects on other hand JAVAFX 2 is on the rite track of creating GUI with use of object oriented concepts which makes java developers to easily code,debug and maintain without any hustle..

How does Silverlight programming on the Window Phone 7 differ from browser plugin?

I was talking to another developer recently and we started to discuss Window Phone 7 development. Their thoughts, from what they had heard (i.e no hands on knowledge) was it was really just Silverlight development. My reaction was that I see a lot of posts these days regarding Silverlight that call out being for "Windows Phone 7" so there must be some distinctions between the two.
So what I'm wondering is what are the differences between developing for WP7 v. the browser plugin.
The things I can think of, but seem obvious are:
WP7 Silverlight version isn't the same SL 4.0 but more like SL 3.5+
the hardware is different (memory\cpu)
I assume there are some different controls
you need to take into account the form factor
Not discounting the above list, which are important, but what else is different when developing a Silverlight application for WP7 v. browser plugin?
Thanks
There are a lot of technical differences and sure there are plenty here who give you bullet list of these. However there are really just a few real differences that make a big difference to how you develop apps for WP7.
Its a touch interface people
Quite a few apps I've played with from the market place seem to have developers struggling to grasp the concept of a touch based interface. Its clear that many are still using the left mouse down event when they ought to be looking for a "Tap" gesture. This can be frustrating for users trying to "flick" and find they've "clicked" instead.
So make sure you are using a gesture based framework (toolkit has one) so you don't annoy the users.
Your app will tombstone
WP7 guards its resources jealously. At a moments notice your app may be deactivate as the search screen or start screen is invoked. Volatile state of your app will be lost. WP7 API includes a number of ways of keeping key small chunks of data when your app gets "tombstoned" so that when the user returns to it, it should be able to restore near enough the same state it had before. However this isn't done auto-magically you have to code for it.
Again some of the apps in the market place don't handle this well and when you have an Omnia 7 which has a seriously sensitive search button that can be really frustrating.
Network access and other services are intermittent
If you are developing a connected app you need to cope gracefully with changing network access or loss of access all together.
Read the manual
Whilst there are plenty of resources get devs up and running real quick the devil is always in the detail. I recommend you at least start with reading Fundamental Concepts for Windows Phone which will cover some of these issues.
TBH there are a lot. Some of them:
Touch input vs Mouse clicks
Sounds and music
Silverlight 4.0 "/content/song.wma"
Silverlight for Windows Phone 7 "content/song.wav" (mind the slash)
Navigation philosophy
WP7 SL has two threads by default. One (compositor thread) runs all animation, second (UI Thread) runs the rest.
Controls have very diffrent default behavior and look
and many other OS realated
Better than any explanation, you should refer to the official website.
Silverlight for WP has support for (according to the same doc):
Hardware acceleration for video and graphics
Accelerometer for motion sensing
Multi-touch
Camera and microphone
Location awareness
Push notifications
Native phone functionality
It doesn't have regular COM bindings and it has somewhat limited access to reflection, among all restrictions.
For a complete list of features supported in Silverlight for Windows Phone, read this document.

Is there a path of least resistance that a newcomer to graphics-technology-adoption can take at this point in the .NET graphics world?

For the past 5 months or so, I've spent time learning C# using Andrew Troelsen's book and getting familiar with stuff in the .NET 4 stack... bits of ADO.NET, EF4 and a pinch of WCF to taste.
I'm really interested in graphics development (not for games though), which is why I chose to go the .NET route when I decided choose from either Java or .NET to learn... since I heard about WPF and saw some sexy screenshots and all. I'm even almost done with the 4 WPF chapters in Troelsen's book.
Now, all of a sudden I saw some post on a forum about how "WPF was dead" in the face of something called Silverlight. I searched more and saw all the confusion going on at present... even stuff like "Silverlight is dead too!" wrt HTML5.
From what I gather, we are in a delicate period of time that will eventually decide which technology will stabilize, right?
Even so, as someone new moving into UI & graphics development via .NET, I wish I could get some guidance from people more experienced people. Maybe I'm reading too much? Maybe I have missed some pieces of information? Maybe a path exists that minimizes tears of blood?
In any case, here is a sample vomiting of my thoughts on which I'd appreciate some clarification or assurance or spanking:
My present interest lies in desktop development. But on graduating from college, I wish to market myself as a .NET developer. The industry seems to be drooling for web stuff. Can Silverlight do both equally well? (I see on searches that SL works "out of browser").
I have two fair-sized hobby projects planned that will have hawt UIs with lots of drag n drop, sliding animations etc. These are intended to be desktop apps that will use reflection, database stuff using EF4, networking over LAN, reading-writing of files... does this affect which graphics technology can be used?
At some later point, if I become interested in doing a bit of 3D stuff in .NET, will that affect which technologies can be used?
Or what if I look up to the heavens, stick out my middle finger, and do something crazy like go learn HTML5 even though my knowledge of it can be encapsulated in 2 sentences?
Sorry I seem confused so much, I just want to know if there's a path of least resistance that a newcomer to graphics-technology-adoption can take at this point in the graphics world.
I understand your confusion (having been there myself), but first let me start by saying Silverlight and WPF are not dead yet! And you would not be wasting your time in learning either!
There are quite a few (terrifying) posts to the contrary, but if you keep searching you'll also find those that support WPF/Silverlights extended life in development, one for example is http://www.wpfblogger.com/post/Silverlight-is-not-dead-clarifies-Bob-Muglia.aspx (this is a nice summary of what Bob Muglia said - there's a link to his full statement). Another assurance is that Microsoft has invested quite a bit in WPF themselves in designing VS2010 in it, so its not likely that they're about to give it the boot.
As for your hobbies and projects, if you intend on sticking to desktop clients I recommend WPF of which Silverlight is a subset, so you'll find that the transition isn't anything major on the face of it (there's a few more controls and such in WPF that aren't in silverlight and gives more flexibility for desky stuff [here's an article you can read if interested - http://briannoyes.net/2010/06/01/WPFNdashIrsquomNotDeadYet.aspx ]), this should be able to handle most of your stuff including playing with 3D objects (to create them I'd use something like Blender 3D, its free but the learning curve for a first timer is kinda steep).
Lastly, it probably wouldn't be a bad thing to learn HTML5, but booting out Silverlight to do it probably isn't the way you want to go. There's bound to be ways in which Silverlight will enrich the browsing experience even with pages using HTML5 in the future, so don't kick it all out yet :)
My present interest lies in desktop development. But on graduating from college, I wish to market myself as a .NET developer. The industry seems to be drooling for web stuff. Can Silverlight do both equally well? (I see on searches that SL works "out of browser").
The industry likes the web because deployment is easy and you usually don't have to support users running different versions of your application. Still, are reasons to choose WPF over SL (performance, things not yet implemented in SL). I'd say stick with learning XAML + C#. You'll be able to leverage it for WPF, Silverlight, and Windows Phone programming.
I have two fair-sized hobby projects planned that will have hawt UIs with lots of drag n drop, sliding animations etc. These are intended to be desktop apps that will use reflection, database stuff using EF4, networking over LAN, reading-writing of files... does this affect which graphics technology can be used?
Either way, database access should be done through services (not directly from a WPF app). There will be differences, but they should be mostly similar.
At some laaaater point, if I become interested in doing a bit of 3D stuff in .NET, will that affect which technologies can be used?
Silverlight 5 will have 3D support. Beta should be announced by this year's MIX conference and released by the end of the year. In the meantime, you can check out the WPF 3D API.
Or what if I look up to the heavens, stick out my middle finger, and do something crazy like go learn HTML5 even though my knowledge of it can be encapsulated in 2 sentences?
While SL is nothing like web programming, I think there is an expectation in the market that SL programmers should have a little ASP.NET (Web Forms or MVC) experience too. (Because, hey, you should know how to work with the environment its hosted in.) I think HTML5 is still a ways off since HTML5 applications will require users to have the latest browsers which are just coming out. Still, couldn't hurt to know it :-)
Fear not, WPF and Silverlight is going to be strong in Line of Business applications, there are some serious security features added even in SL5 and it ties in nicely with all the existing Microsoft infrastructure most corporations have.
It's a similar thing to all the bloggers crying the end of Flash after seeing some planned HTML5 features (and yet not even the codec for the video tag is settled), but upgradeable runtimes to support any browser (IE6 corporate market share is still sky high...) and the really nice Microsoft developer stack (VS + Blend) makes these technologies more resilient than people only using cutting edge technology would think.
Having used Flash for years before Silverlight I can tell you that developing custom UI with SL is a really pleasant experience, so if you're less into multimedia and games (which are areas where Flash still has edge), this is the place to be for you.
And there's Windows Phone 7, with the Nokia strategic partnership I doubt no one would want to get anything developed.
These being said, if you have the chance don't be afraid to venture off to learn some completely different programming languages, for me personally learning Ruby on Rails changed the way I look at backend development, and some of these eye opener ways of doing things more efficiently transfer nicely between environments.
WPF and Silverlight are definitely alive and well. Also, don't let people fool you into thinking it has a "steep learning curve" (which is a common myth.) WPF isn't a walk in the park, granted, but it is also not the hardest thing to learn.
I recommend the book "WPF 4 Unleashed" by Adam Nathan.
http://www.amazon.com/WPF-4-Unleashed-Adam-Nathan/dp/0672331195
It will teach you everything you need to get started with WPF (and Siverlight, which is WPF-based.)
Yes, silverlight can do desktop and web environment equally well, and is your best bet right now. As for 3D designs, you might want to learn XNA. Its quite easy to use.

Silverlight vs Adobe Air

Now with Silverlight 3 (offline, out of browser stuff), what are the main differences between the two technologies?
There are some significant differences right now in the Beta, no idea if these will still be differences in the release version.
There is no way to hide the window chrome in Silverlight OOB.
No ability to create a notification tray icon.
Air apps can be multi-window, Silverlight OOB cannot.
Air apps have more access to the system, Silverlight apps are sandboxed.
There are differences in the install and update procedures, not sure of al of the details.
AIR gives you access to the file system and a SQLite db. SL3 only lets you write to the file system with user interaction (a Save As dialog) and doesn't have any support for a DB in Isolated storage or on disk.
SLOOB runs in a sandbox still, so you're limited to the same cross-domain issues as a Silverlight app running in the browser.
It's a three way war: Adobe AIR, MS Silverlight and Mozilla Prism.
Read this blog-post and this article. A quote from the second article:
Silverlight is the clear winner in terms of power, but as one of my colleagues pointed out the other day does it matter? His point was that Flash has an incredible penetration rate. According to Adobe it’s in the 99% range. When considering rolling out a new product that requires a plug-in why introduce another barrier to adoption?
and another one from the second:
We then asked of those who answered yes which formats they use. Unsurprisingly, given how long it has been available, Flash leads with 61% of respondents. More surprising was Silverlight’s very small market share of a little over 2%, essentially the same as that of the Real format. Quicktime did surprisingly well, at just under 20%.
As for VOIP support in SL read this.
Read up on Prism here.
In addition to what Dave said, Silverlight seems to be missing device support (microphone and web cam).
One thing I'd like to point out, that nobody else has mentioned is (and I'm not picking favorites when I say this, as we use Air/Flex for a project at my job):
Adobe doesn't have the talent needed to create quality run times and IDEs for developers. Their ideas are fine, it's the execution of those ideas that I doubt. I think we can all agree that Visual Studio is light years ahead of any IDE out there. Quality wise I'd even go as far as to say that VS2005 is better made than anything on the market (it's now 2011) 6yrs later.
If you feel Flex/Air meets your needs better, my all means, go with it. But if feel either platform will give you what you want, I'd say Silverlight wins every time. It's more mature, it's substantially more stable.
Our biggest headache for our commercial app is that Air does not managed garbage collection well, for the past year and a half, our app has suffered from slowdown, the only resolution is to do a nightly reboot on a kiosk because we nest objects inside objects, once you hit the 3rd nesting, it seems Air cannot flush those objects correctly, Adobe is will aware of it, and considering how much time has passed and all the newer versions, Adobe has no resolution. That is the sign of poor run times and Adobe developers who just aren't very good. Despite the fact people love to bash MS, these days their platforms are pretty reliable is reliable overall, especially their .NET runtimes. Adobe feels like Microsoft circa 1997, they're years away from offering reliable solutions.
PS: I'm sure a couple koolaid drinking Adobe devs will be down voting this answer.
Assuming only minor changes are necessary to run a Silverlight app on the desktop, the differences are in implementation details. Silverlight is a .NET-space framework based on WPF. Flash/Flex/AIR are proprietary Adobe products based on ActionScript.
In terms of capability, they seem to be roughly equal with complementary strenghts and weaknesses. Example: SL3 will have GPU and pixel shader support. The latest Flash as Inverse Kinematics. Different strokes, etc.
From the users standpoint I like the Silverlight installation process a lot more... Specially on the Mac - Air app installation is unnatural (to many clicks and processbars) but oneclick Silverlight install is nice :)

finding a "semi-pro" project for Silverlight, suggestions?

I'd like to get my feet wet in Silverlight. I think all the reading and tutorials in the world don't work nearly as well as a real project. Plus I've done tutorials, read some books, listened to podcasts and so on. I'm ready for the next step. I'm not sure how to make that step though. I'm certainly not ready to put "Silverlight development" on the resumé with any confidence. Some options:
get on elance and make some lowball bids for RIAs, assuming that part of my compensation is the experience
craigslist
find a designer who needs a programmer - already asked all my designer friends ;)
I'd like to find a non-profit ideally, it'd be cool if I felt like I was helping while I was learning. But that seems like a longshot. I'd really want it to be a publicly facing website so I can use it as a bit of a portfolio piece. And I'd be willing to work for free, or a sliding scale sort of fee. I'm not a designer, so I'd need some help in that dept. I've got some experience with that, but it was so long ago and I don't delude myself about my skills.
I've got about 4 yrs experience in ASP.NET, Winforms and C#.
Suggestions for finding this mythical project?
There is no shortage of non-profits who would love to have someone build software for them, and they don't care what technology it is (this is more or less the sentiment of any customer). I found a non-profit that has a technology need and I'm using ASP.NET MVC and Silverlight to fulfill that need, though admittedly with free time at a premium it's not progressing nearly as fast as a "paid" project. So, my advice is to find a non-profit whose mission you believe in and just send them an email. I doubt they'll turn you down.
Alternatively, help me out! :)
My first, and unfinished, project in Silverlight was started in November 2007. I was designing a poll map of the US in which the user could see realtime vote count, hover over a state and get a detailed breakdown. Similar to John King's Magic Map.
My newborn twins were three months old at the time, so I didn't have a chance to finish it but it was great experience. Silverlight is great for very visual applications. Some more ideas:
Anything geographical, like the polling stuff. There is a free XAML USA map available, Google "XAML USA map".
Graphs, charts, etc. There are some third-party controls available for this or you could experiment with rolling your own.
Drag and Drop type interfaces can really pop with Silverlight.
Games! (My personal favorite)
Here are some ideas:
Make a easily-skinnable shopping cart in Silverlight that integrates with an e-commerce back-end system
I'd try to join an existing Silverlight open source project as a contributor like
this Silverlight Ribbon project on CodePlex.

Resources