Browser graphics: Java Applet vs Flash vs anything else?
We sell photoalbums which our customers create theirselves using a client album editor program (for Windows). Now we are going to develop an online program so customers could create their albums in the browser: upload photos and edit them. This is going to be a rich browser application with full graphics support.
The problem is what technology to use?
Our server application is build in Java and we think about Java Applets so that we could reuse some Java-code. We are also not ver开发者_Go百科y familiar with Flash. But some people say that Flash is preferred.
Maybe there're some modern technologies now? SVG or some Google technologies (like GWT but with graphics support) or something?
What do you think?
Thanks in advance!
UPDATE
The photobook editor was created using GWT + SVG.
There are four big choices you can go for:
- HTML5 + CSS 3 + AJAX
- Silverlight
- Flash
- Java
HTML 5 + CSS 3 + AJAX (For the surrounding website.)
As there are a lot of graphics involved and these upcoming standards are fairly new it would be hard to get everything you want accomplished in this language, you could build up a large part of the site in this but the image editor itself will not be fairly easy to develop compared to other languages.
Silverlight (Unless you have a lot of time... A bad choice, for now...)
A lot of users don't have this installed by default yet although the support for installing it is reasonable (Moonlight on other OSes, different browsers can do Silverlight), if you want to reach a wide public you might want to skip this for now. This one would involve you to learn C#, .NET, WPF and other Microsoft technologies to get you going which will require a lot of learning time from your company.
Seesmic, the second popular Twitter Client, however seems to use Silverlight to install and update it's desktop application in a quick way in the browser so it might not be too hard to require your users to have Silverlight. Another bonus to learning C#, .NET and WPF is that you can use the learned techonologies to write desktop applications. (Which again could run on other OSes, Mono's support is getting good)
Java VS Flash (Stay unless you have reasons to change!)
As seen on Google Trends: Java, Flash, Silverlight you will notice that Java and Flash are on the same level, so they are both fairly supported by your users. You could best stay with Java as you have the experience in that language, not to forget that you could reuse code you have written. Another bonus on staying with Java is that you don't to switch between software for developing different parts of your software infastructure.
You could look up Java VS Flash on Google and only when you have the reason to change you should do so, there is no point at learning something with the same (or maybe worse) capabilities when the thing you use at the moment is fine to do the job. There is nothing wrong with learning something new when you have the time for it though, but you'll have the drawback of being new to it...
Java applets are a feature-rich, well-established technology for embedding applications in web pages and you are a Java shop with an established code base in Java.
Unless there's a particular platform that you want to target where you know that Flash support is better than Java support, then in your position I would really just stick to Java.
Other possible options include:
- Javascript, raw or using a Javascript toolkit like Ext-js
- GWT,
- JavaFX,
- Silverlight ... but that won't work with lots of browsers.
You could try Adobe Flex. It's specifically designed for RIA's and offers a lot of Flash based functionality. It uses a specific form of XML (MXML) for layout (and supports CSS), and Actionscript for scripting, and has a lot of prebuild components. Also checkout Tour de Flex which is itself a Flex application containing code examples and advanced components. If the default components seem too restrictive you can use your own Flash based ones. The code is then compiled to a swf file, or an air file (for desktop applications).
You can also use a framework like GraniteDS to transmit data between a Java based server and the Flex client, allowing you to reuse some of your code. I believe it takes advantage of things like Spring as well, if your projects uses it.
And there's a version of Eclipse designed for working with it: Flash Builder (previously Flex Builder). It comes as a standalone IDE or an Eclipse plug-in (it does require a licence though - 60 day trial is also available I think).
I think it will be better looking and faster than Java applets (not sure about JavaFX though since I've never used it). But on the downside it will require some overhead learning how it works (more so if you plan on using GraniteDS as well) but once you get the hang of it I think it's a great tool.
Edit: ActionScript is very similar to Javascript (they're both based on ECMA script), so if you know that it won't be too hard to learn AS. Also the MXML part is somewhat similar to using HTML, but a lot more powerful, since you can define your own classes, and use them directly as a tag in the MXML part.
Edit2: You could create an animated album using components like this one (demo here)
It depends on what tasks the tool should do, regarding to editing images.
If it helps, here are some similar questions:
- Online Image Editor - Ajax or Flex / Flash??
- Photoshop-like, embeddable web based image editor?
- Free Open Source In-browser image editors
HTH, George
Switching from windows to another propritary solution (like Flash and Java) guides you "out of the frying pan into the fire". Try standards! What about HTML 5 with drag and drop, GMail allows to add attachments this way.
If you have a working Java-Editor for the albums, maybe you can package it as Webstart-Application? If this way of deployment is ok you may save yourself a lot of work.
http://java.sun.com/javase/technologies/desktop/javawebstart/index.jsp
It's all about your target client. If your target is the general public running desktop applications and your web application is more like a frontend you should stick with flash, wich is already present on something like 90% of home computers. If you need something more powerfull, with a lot of code already done and available and your users don't mind having the java jre installed, java is the way. But it's all about the user. I suggest you to make some kind of analysis on your user base ( see if who access your download page have java or flash installed) and make your decision based ont that.
精彩评论