Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java web app as desktop app, which frameworks should I choose?

I need to make a web app that I would be able to install as a desktop application on a client PC (database, jetty+war, firefox/chrome/sth portable).

The application is a quite big search app (I MUST use Lucene). There are only few screens, some dependencies in search queue, etc.

Now I need help in choosing correct components. Application must be:

  1. Light - minimalistic and user friendly frameworks (Java + JavaScript)
  2. Efficient - working on old PCs and working fast
  3. Developer Friendly - I would love to write it with pleasure ;)

So my questions are:

  • Do you have any suggestions about choosing components?
  • What frameworks, what obfuscator?
  • Do you have any comments about making a web application a desktop application?
  • What are the main risks?
like image 360
tzim Avatar asked Aug 18 '10 11:08

tzim


People also ask

What is the best Java framework for desktop applications?

Swing is by far the best Java framework for desktop applications. If you are looking for a framework for a lightweight desktop application, look no further. It is purely written in Java programming language and is built on top of Abstract Windowing Toolkit (AWT) API.

Which is better desktop application or web application?

Better performance In general, desktop applications are faster than web-based ones, run independently on your computer, and do not require proper connection to the Internet. In this case, independency from web brings a positive result.

Is JavaFX good for desktop applications?

JavaFX is a great UI toolkit to write Cross-platform desktop applications. With https://gluonhq.com/products/mobile/ support, it is even possible to write mobile applications.


2 Answers

Many Java web apps distributed in this style are done so alongside a lightweight application server or web container such as Jetty or Tomcat.

When you click to start the application, this actually starts the container which internally hosts your application. (You're application can be packaged as a WAR internally.)

For lightweight databases, possibly look at SQLLite, HSQLDB, or Apache Derby. These can also be distributed alongside the application. Or maybe you can just collect database credentials as part of your install process and let the customer maintain their own database.

The arrangement you describe will involve work and custom scripting. You're going to the trouble of creating a thin, multi-user, web application and then throwing away the main benefit - the shared single instance. Customers, eh, who'd have them! :-)

like image 100
Benjamin Wootton Avatar answered Sep 21 '22 19:09

Benjamin Wootton


Maybe you could take a look at Google's GWT. You can write Java code and it will then "compile" it to JavaScript. Using it feels like using a desktop app. Gmail, Google Wave,... have been created using this technology.

I think you don't even need a webserver, but the compiled result is pure JavaScript + static HML pages. If you then create a Chrome application shortcut it'll really look like a desktop app ;)

The only thing is that the learning curve will be a bit steep initially but if you're eager to learn, then it's really cool stuff and you can manage it easily.

like image 38
Juri Avatar answered Sep 23 '22 19:09

Juri