Desktop compatible Java Web Framework - java

I need a Java Framework for Web development with these caractheristics:
Rich graphical UI;
Development tools available for most known IDE (Eclipse or Netbeans);
Free (preferencially non GPL);
Large community;
Easy to generate Web/Desktop/Mobile with the same code.
After some research we've found ZK Framework but we couldn't understand if we can compile for desktop or mobile.
Thnks

ZK Mobile is a native client running on Java Mobile (or Android API). It does not require a modern browser, but, as I know, there is only a limited set of components (much less the number of Ajax components).

I would be seriously surprised if a framework exist where the same GUI code can be used for web/desktop and mobile apps. The service -and model layer of your application should be reusable without any problem but you can't expect JSP's for isntance to be displayed in a swing or android application.
I didn't know ZK yet, looks nice but I guess there mobile part is intended for mobile webbrowsers and not mobile applications.
You could also consider vaadin, GWT or apache wicket.

I would recommend you to consider GWT seriously. Although it is not the best choice for mobile clients, gwt applications could be executed in your mobile device , if your mobile device's browser can execute javascript. But again I should express that native mobile applications would be better choice than browser based mobile applications.

Related

experience with Vaadin touchkit

I´m soon to start a new mobile app project and I dont have that much experience with either iOS or Android development but I have used Vaadin for presentation tier on different occasions.
The app will most likely be lightweight for the mobile client but more heavy for backend servers(jboss). I feel kinda lost so i´m asking you.
Question: What are the drawbacks of using Vaadin touchkit compared to other frameworks/ build from scratch? Where might a problem occur? Any input and recommendations are welcome!
I am currently developing a small application using Vaadin TouchKit that once it enters production will have some hundreds of users. I haven't been able to locate any publicly available apps in production that have been implemented using Vaadin Touchkit, so what I'm going to list here is based solely on my personal experience with the technology.
Drawbacks compared to native applications:
I'm assuming this is what you refer by "building from scratch".
As this is web techonology, your application performance will always correlate heavily with the quality of the users Internet connection. If you have to render large UI's with a lot of components and details, it will be slower than doing so in a native application. A lot slower if the users connection is poor. Or if a connection is unavailable, then your application pretty much becomes unavailable. There is a way to use HTML5-cache for providing an offline-mode in a Vaadin Touchkit app, but it is not very useful for storing large datasets as the cache has a lot more limitations than for example an Android SQLite database. For simple UI-stuff it might be viable, but storing data for offline-access is in my opinion pretty much out of the question.
Other than the above mentioned points, I have not run into any missing capability, as you can use any Java library at any time on the server-side, and your application will be running safely in a servlet container.
Upsides compared to native applications:
You didn't spesifically ask for the upsides, but I guess this is any input and recommendations.
Your Vaadin Touchkit app can run on basically any mid-high tier mobile device launched after 2010, basically excluding only the ones with Windows Phone OS, since Internet Explorer does not use WebKit for rendering and other browsers are not available as far as I know. And since this is a web application, it does not exclude any other desktop browsers than Internet Explorer. By creating one application, you support roughly 80-95% of your users.
As mentioned, any Java library, any internal API, any authentication method supported by your hosting environment is available to your app, which is not as easy to implement for native mobile applications. This can be overcome with great software engineering, but demands a significantly higher amount of developer resources, not to mention that you are still stuck doing it for each platform separately.
And of course maintenance of a servlet app compared to the maintenance of a native application is considerably more simple: deploy once, all users get the changes without doing anything. No app store, no versioning, no hassle.
Vaadin TouchKit compared to other web development:
I am not familiar, at all, with web application development without using Vaadin, so I am not going to tell you whether or not it is the way to go compared to other modern web application technologies and frameworks. All I'll say is that in my experience Vaadin makes creating UI's and backend functionality relevantly easy and more graspable if you are familiar with Java development and desktop application development in general.
To conclude, don't rush in to create your mission critical application using Vaadin TouchKit before at least prototyping with it, and getting to know the performance and limitations it presents. For certain type of applications, it might be one of the best solutions. For a certain, larger group than the other, it is probably one of the worst. It is not a very mature or generally adopted framework, but it is useful. I'll be happy to hear more about the type of app you're planning and help you figure out if there are any showstoppers for using Vaadin TouchKit.
P.S. You've probably already run into this, but this document opens up the guts of one of the TouchKit demo apps:
http://demo.vaadin.com/vornitologist/VAADIN/tutorial/touchkit-tutorial.html
I just tried out vaadin touchkit examples on my android phones, well now I got affirmation why I prefer native software over html in some cases. Try it out - dont be confused by nice-looking styles, just try to USE it, this is what apps are made for. In my case I cannot withstand non responsive GUI or not smoothly scrolling lists. Again, for a simple gallery - a JavaScript/HTML solution is just perfect :) So the right way is the hybrid way! (imho)
Vaadin Touchkit offers very good user experience and provides wide range of UI components to apps.
Its default iOS theme provide almost iOS like UI and it also offers many other themes too.
But this will not run as smooth as platform specific mobile apps. as ultimately it will not completely leverage the real power of mobile platform features as finally it is going to run in a mobile web browser. as compared to native mobile apps
Find more detail on vaadin touchkit and comparison with similar technogies like ZK Mobile and native platform specific apps. : http://jtechnoprojects.blogspot.in/2012/12/vaadin-touchkit-vs-zk-mobile-vs.html

Android application development: java vs. jquery mobile

I'd like to build an android application for a school project but I'm a bit confused, I saw that i can build an application using Java or using Jquery mobile.
Do they have the same capabilities?
If i build an application using Jquery , can i pack it and have it installed like a java application (as apk) or is it only used for building websites?
If so, what tool do i use to pack it?
jQuery Mobile needs an intermediary framework that communicates between JavaScript and Java. PhoneGap is a popular one of these frameworks.
PhoneGap is also actively maintained and they roll out new versions almost every month.
The main reason to use PhoneGap/jQuery Mobile is that it makes development easy if you already know HTML/JS/CSS. Another great reason to use PhoneGap is that you can use your existing website as the base for native applications, yeah, plural, not just Android but also iOS, Blackberry, etc. It also gives you a pre-built UI with some widgets so you don't have to roll your own.
The jQuery Mobile documentation talks about some of the caveats to creating a native application with PhoneGap and jQuery Mobile.
I don't know what you have already tried or what your skill set is (based on your stackoverflow history you may know more about java than I do), but you would be best off just using the Android SDK. I was able to design and complete a custom business project and learn java while doing it. I can't comment much on jQuery since I've never used it. jQuery seems like it might be a nice for the reasons Jasper listed but might add layers of complexity you don't need to deal with if you don't need to run your app on other platforms.
Jquery Mobile Framework provides the way how you web application looks on different hand held devices simply but this can not use the native device capabilities like picking up an contact from the contact book/application. while native application has the capabilities to handle all the system generated events or broadcasts.

What are the options for migrating a networked Java desktop app to a web app

I have a Java desktop app (with a Swing GUI) that runs in a LAN environment. Normally, I run it with a bunch of machines, some play the role of servers while others act as clients.
Now, I would like to run the same app on the Internet, where both the server and clients will be hosted on a website, so that visitors of the website will be able to run as the clients and interact with each other.
I wonder what are options are available for such migration? Do I need to re-write everything from scratch using some Java-based web framework? If so, how should I deal with the GUI part? Or do I just host the app as an applet? (somehow I am reluctant to go down the applet route, as it may require additional setup on individual visitor's machine I have no control of and there may exist compatibility issues). Thanks!
One option would be to use Vaadin. The programming mindset is quite close to JavaSE Swing. It is a GWT derivative on the client-side, but the logic is really on the server JVM and the framework takes care of the communication (xhr or web sockets).
Google Web Toolkit (GWT) could be usefull for that since it will let you re-use generic Java code and compile it to JavaScript for running in the browser. In my app I am reusing classes in the client that I use in the server. The UI has to be recreated using web widgets though however wysiwyg tools exist for that.
You could also migrate your raw sockets to Websockets if you require bi-directional communication.
If your code follows the mvc pattern it should be possible to reuse the model stuff. My favorite java web frameworks are those from spring source. Spring mvc (clean mvc design) or spring roo (more the rails style with code generation etc.). Both integrate well with the dojo framework (ajax / gui stuff).

gwt or java based frameworks that allow easy web app ui design for pcs as well as tablets/smartphones

I know that Smart GWT also supports Android and iOS, as well as regular PC/iPAD for UI design.
Is there any other good Java based or GWT based framework, that allows creation of interfaces for web apps, that show correctly in iOS/Android/Blackberry, as well as desktops/tablets?
I have used Vaadin before and they have a TouchKit project that aims at mobile development. Vaadin is a server-side framework, so offline applications can be a problem. Anyway, some links:
Vaadin
TouchKit Addon
Using TouckKit

Iphone Application Porting to Blackberry RIM

I have developed an application for iPhone. Is there any way to port that application on to Blackberry RIM so that i can avoid rewriting the application in Java for Blackberry RIM?
I am rewriting my application for black berry,suggest me the way to rewrite so that later stage I can port that directly to Android.
Thanks in advance.
The short answer is no.
The closest thing I am aware of is projects like PhoneGap (and others, including Appcelerator Titanium) which allow for cross platform development for smart phones including iPhone, Android, and Blackberry by creating hardware specific wrappers around WebApps. PhoneGap essentially allows for Web Apps to have more complete access to the hardware and operating system of these devices (like the camera, motion detection, push notification, etc.) by wrapping the Web App in a customized browser that provides javascript handles for accessing the hardware.
PhoneGap will even build binaries for each of the supported platforms on their servers (with limitations...for example, if you want to submit to the Apple App Store, you currently need to build the iPhone binary yourself due to developer certificate issues).
So if your app could be (re)conceived as a Web App with some extra help accessing device specific hardward features, then PhoneGap or similar development kits might provide some shortcuts to cross platform deployment.
not really. If your app is written in custom objective-c code, then you will need to manually port it to blackberry java. there are some cross-platform app frameworks out there though that may allow you to do what you need, but youd have to redevelop your app with those frameworks.

Categories