I am a fresher in web developing , is I ve to study applets?
If you are a Java person, maybe look at JavaFX instead (even though it is not clear yet if that technology will take off any more than applets did).
If you are a web design person, do not even think about it before you got acquainted with Flash and HTML5. Applets are quite marginal at this point.
Most folks say no, but I still see a lot of great uses for Applets and in fact have seen really complex commercial UIs coded within the context of an applet.
in a short word, no, applets are a dead technology for the general purpose web.
on intranets with lots of bandwith and controlled client environments they maybe of some valid use.
look at Google Web Toolkit (GWT) as an alternative to creating applets.
Adobe Flex is also a good alternative now.
If you want an embedded client application, the Java Web Start (the better Google keyword is JNLP) is less or more the successor of the legacy Java Applet. Alternatives to this are Adobe Flash and MS ClickOnce.
If you want an RIA (Rich Internet Application), then JavaFX is the better Java based choice. Alternatives to this are the MS SilverLight, Adobe Air and Adobe Flex.
Apart from JavaFX, Flash, you can learn about Adobe AIR and Microsoft Silverlight. They are kind of extending the limits of what was earlier possible with just Flash
There is still one thing that I know of that a Java applet can do and Silverlight, Flex (non-AIR), etc can't do:
Drag and drop from the filesystem.
Flex offers a o/s based browse and select filesystem access. Silverlight has a similar functionality. But to the best of my knowledge if you want the user to drag a file from Windows Explorer etc. into a web-site based control, Java applets are pretty much your only choice. You could create a Flex based app using Adobe AIR that can ask the filesystem outside the o/s browse and select dialog but I'm not convinced the AIR install base is adequate yet. Probably depends on your target customer (early adopter, install whatever you say to vs. stable corporate user with IT lockdown on their workstation).
If someone knows otherwise for certain, please comment!
But to answer the original question, unless you need the drag and drop filesystem to web functionality, I would spend your time on Flex. Silverlight and Java FX can't compete with Flash for market penetration. Since Flex compiles to flash, it has a very high install base (>95% of internet enabled computers) and its base updates to the newest version frequently. Inserting a flash file into a browser is a easier than the arcane art of applets.
if you want/might get a job where you maintain old applications then probably you will deal with Applets.
For new projects, dont get close to it.
Related
My society was hit in the face with the NPAPI deprecation in the google browser.
We were using Silverlight for a long time and we are curently looking for any replacement solution.
What was good about applets and silverlight was the easiness for the applications to access the file system and get the rights to automatically save anything into the computer.
Beside it was compatible with the major OS and almost all Browsers, which was a great thing for our customers.
But chrome decided that NPAPI causes too much security problem, and they will remove it by september.
I'm looking for a simple way to provide access, at least to the file system of the customer.
asp.NET gives us anything we need, on the server side, but it can't do a thing on the client side. With silverlight we were able to use the clipboard,save multiples files on specific directory, send mails from the client etc.
I thought about making our own plugin on several OS, but that would be a lot of work. So i was wondering if there were a simple compatible solution that already exists.
You could build a FireBreath2 plugin to provide this functionality -- FireBreath2 will work on chrome w/ native messaging, and the functionality you describe shouldn't be too hard to do cross-platform. Keep in mind that you've got some serious security risks to protect against, though.
FireBreath2 as of this writing isn't quite production ready, but it's pretty close. ActiveX support isn't complete yet, but it shouldn't take that much work to finish it. It would require a good understanding of C++ and a willingness to help with the project since it's not 100% ready for prime time yet.
In my company we want to make a desktop software, but we want to create the better experience in the most common platforms (Windows(XP/VISTA/7), Linux and MacOs (And iOS) and several smartphones (android, webOS, windows mobile)
We have studied 3 options 1.- .Net, 2.- Java, 3.- C++ with Qt
We discarded .Net because we don't like the .net support in mac and linux. So, we have 2 options, Java and Qt. Qt sounds very good, but I don't like c++. Java sounds good, but I have the idea (and maybe i'm wrong, you tell me), that java never has the "look and feel" of a real native application. In this moment, the better choices look to be Qt, but i would like the advice of people with more knowledge and experience than me.
Thanks in advance
In my opininon and experience, Qt works fine on many platforms, although I have never tried Mac. Also, the Qt documentation is very well done,complete and easy to understand.
As for Java, I agree that it does not look perfectly native on platforms.
Hope this helps.
Eclipse is written in Java, and it has the look and feel of a native application. The reason is that it uses the SWT libraries. The SWT libraries use native widgets.
You could use some 'web' technology, either the browser or something like Adobe Air. There is no rule saying that a browser app has to run on the internet. HTML5 is going to provide advanced features that are only going to blur the lines between the web and the desktop.
This route has some advantages:
1) There are a bunch of libraries available for developing these applications, Sproutcore, ExtJS, etc.
2) You write javascript, html, css.
3) A lot of developers are familiar with these technologies, so you have a large pool of talent from which to draw.
4) Cross platform
5) Both desktops and mobile devices have browsers. So you won't have (as many) platform dependent versions of your software.
This idea might not be right for whatever you are trying to do, but you can consider it.
What is the Microsoft version of an embedded Java web applet? Is there a good example of one on the web?
Also, why is the dynamic web dominated by ajax and not embedded applications?
Silverlight is probably the closest thing now.
As far as why the web is dominated by JS driven websites rather than embedded proprietary applications I'd venture to guess it's the openness of the resulting web pages. Almost every web browser out today ships with a JS engine, and most users run JS; this is important because it means the user doesn't have to have any other applications (beyond the browser) installed on their computer.
JavaScript driven sites are also more portable than embedded applications -- the developer only needs to worry about a browser being installed (though perhaps a particular browser), not what operating system the end user is running. In terms of being on the web, only having to worry about browsers is better than having to worry about browsers and operating systems.
Furthermore, the pages that result from JS execution are selectable, the text can be copied and pasted -- in general, JS-driven websites are often more accessible (though often not as accessible as plain-old-text websites).
Perhaps something that helped JS/Ajax rise to the top was that it could so easily access to the DOM, so it plays nice with HTML (and the existing web infrastructure).
An ActiveX control?
Also, to your second question, well these "embedded applications" as you call them aren't really web applications. They are components that require browsers to support some sort of way of hosting them that are outside of the realm of traditional Web standards and specifications. As for why these applications don't "dominate" the markert, they tend to break out of the way the web works and many kinds of platforms and devices don't support them such as mobile phones.
The Microsoft equivalent of an "applet" is roughly an activeX control, although they are only vaugely similar - the similarity is that they are both embeddable into the browser. The most notable difference other than windows vs cross platform is in the region of security. With ActiveX, it is all or nothing - you either don't run it, or you trust it with everything - the activeX control runs as a regular windows "program" and has the same level of access as other programs running under your account. With an applet, security is more finely controlled, with the default being a controlled environment - the "sandbox".
As to why AJAX is more popular might be considered a subjective question, but from the technical perspective, some objective points in favor are:
it is implemented on top of a browser model that aims to provide a safe/secure execution environment
is cross platform (in as much as the browsers adhering to the various standards involved.)
has a suite of development tools and libraries for getting results quick
it can manipulate the components in the browser rather than working inside an isolated embedded box
it provides a better end user experience - seamless integration with the webpage with no security warnings, certificates, popups etc.
You could consider ActiveX or Silverlight both as alternatives to Java Applets.
Ajax is built on open standards, is natively supported by most modern browsers without requiring a plugin download, and when done correctly is often the best option from a performance standpoint.
There are many RIA frameworks popping up (flex, extjs, gwt to name very few).
If my server is written in Java, why not use java web start?
The benefits I see: I get to program in a language that is easy to debug (compared to javascript), I can use the same code in server and client side (validations, model objects). With SWT I get nice looking GUI.
Even if it means requiring a plugin in the browser (or using a cli tool), if my application is an enterprise application, does it matter?
For webstart you need Java installed on the client. For Flex Flash. For Silverlight .Net. For other RIA platforms a JavaScript enabled browser. It is a lot of product politic in that question.
And Java is very intenting, because "all seems to be a nail". Of course one of the great advantages of Java: same language, same knowledge, same code on every platform or environment (server/client/middleware).
For enterprise internal use, no it does'nt matter at all. If your biz is on the internet the decison is much more complicated (or even you have to offer the same functionality in diferent platforms).
The only contra argument is that in a lot of cases it's impossible to force the clients of your rich client app to have Java runtime installed on their machines. Everything else is a matter of taste, already existing knowledge and experience.
I think that until now the perfect client technology simply does not exist. We were excited about ajax and then there is another "hot" technology like Adobe Air. What is the difference between these techs and the "old-fashion" client-server apps? My friends we are back to the early 90s!
The AIR for example needs a runtime installed on the client machine, it has access to local system resources and communicates with the server using a binary protocol. On the other hand we are developing "RIA" applications (and very good ones :) using pure java swing clients communicating with the server through the Spring's binary remoting protocol. And i must say, in such a development life-cycle Java-Webstart is the winner. Especially in large-scale projects (and i mean laaaarge-scale, not just e-shops) in the java field i haven't found something more productive and maintainable (ah! maintainence... another big story) than this.
IMO if your users can live with a nice look-and-feel and you don't have to adopt another technology just because it is young and sexy use webstart. Put more work in your business model. After all enterprise apps is about business, not animations. And money is where the business is ;)
Yes I think it does matter, seeing that some big companies still have IE6 as their standard browser and as a requirement for web based applications. And those won't allow you to install any third party plugins into their dinosaur browser.
And you don't make a difference between RIA technologies that use existing browser technologies like JavaScript, CSS and HTML (including GWT which just generates client side JavaScript and ExtJS which is just a JavaScript Component library) and the ones that require an additional runtime environment (Flash, Flex or client side ).
Of course some things are easier to accomplish with proprietary or third party solutions (or you just have more knowledge in one of these platforms), but I still think that there is a huge potential in technologies that are standardized and already implemented in every modern browser (the differences between the browsers are slowly but steadily getting better, too).
If you ship it as a 3rd party application you can define a JRE as a System requirement, anyway but then instead of JavaWeb Start ship it as a normal Java Application as well.
I'm working on some Flex spike in my company. We are basically evaluating different scenarios etc. What solution would you recommend for embedding Flex components into Java app? Flex <-> Java communication is not (yet...) an issue, just embedding swf into JFrame.
I've done it with EasyJCom. It's pretty straight forward as long as you're using one of the standard Java windowing libraries (Swing, awt). You can see an example (From the EZJCom site) here: http://www.ezjcom.com/FlashTest.java.txt
The people responsible for EasyJCom are also very responsive, and even though we ended up not using their product (Switching platforms), I'd recommend them.
I haven't used JFlashPlayer, but did take a look at the docs, it seems to be adequate as well. I think their license requires you to obfuscate your code. I thought it was a little odd, but maybe I mis-understood the license.
It gets quite a bit more complicated if you don't want to use Com, or if you need to embed in another type of window.
If you need to embed flash cross platform, you may be stuck rolling your own Jini library for the Mozilla plugin. At that point... Maybe it's worth just switching platforms if you aren't too far in. ;)
Haven't tested this, but it looks like JFlashPlayer will do the job. http://www.jpackages.com/jflashplayer/
None of these supports Linux or MacOS. So much for the cross-platform Java and Flash.
I think the best way to do something like this would be to embed something like xulrunner into your java app then have the java app interact with flash via the xulrunner interfaces.