What frameworks to use for java Desktop applications - java

I am not familiar with any of the leading frameworks of java but still i managed to develop a desktop application. These days people are talking about spring, strut, hibernate etc.. I want to know how many of kind frameworks exists there and which of them are commonly used for developing a desktop application which involves database as well.
Which of them do you think is a must learn for Desktop application developers. Thanks in advance..

None of those are directly related to desktop applications, although Spring can be used just about anywhere, and Hibernate is app-framework-neutral.
The only real desktop framework player these days, IMO, is Griffon.

Maybe you don't really need a framework, take a look at the SWT/JFace Data Binding that is also good to learn for a desktop/database oriented application developer.

Take a look at the NetBeans platform. It is a very sound framework that eases a lot of things - but it does have steep learning curve.
Especially when you know Swing already it's very handy, because you after all it's a Swing framework and plays nicely with any Swing component out there.
Here is a nice little demo showing how to use JPA and the NetBeans platform to create a simple CRUD application:
http://platform.netbeans.org/tutorials/nbm-crud.html

Related

Swing based application architecture

I am planning to develop a swing application for developing a large in-house software.
Features:
It should be menu based.
Modular
Secure
Can you please help in choosing the right architecture and technologies to use with Swing. Also any good sample should be helpful.
Do have a look at the NetBeans platform. It makes things a log easier. Especially for "large" applications, the module concept will help you a lot (e.g. for structuring your application)
It has a learning curve, but I think in the long run it will help you.
This article might give you an idea:
http://netbeans.dzone.com/nb-belgian-radio-monitoring-toolkit?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+zones%2Fnetbeans+%28NetBeans+Zone%29
The limited requirements you list don't really eliminate any framework options. Get a little further in your requirements and design before you determine what you need to add to Swing.
To strengthen eugener's claims, I would recommend looking into Spring Rich Client, or its successor Valkyrie RCP.
I would suggest multi-tier architecture based on Spring Framework. We had a very good experience using Spring on the client as well as in our own application server. It makes difficult tasks a lot easier.
If you are not afraid to start with a framework that is still under development (although many of its parts are now stable), you couls take a look at GUTS.
It also requires knowledge of Guice Dependency Injection library, which helps having a very clean design of the whole application.

What should .NET programmer learn in Java/Flex world (equivalents to ASP.MVC2, MEF, Prism, IoC and DI frameworks

I'd like to play with Java/Flx and build RIA with Java as backend and Flex as frontend and if it would be necessary mayby some website (i don't know which framework right now, probably Spring + some Jquery)
But at the begining i'd like to know which technologies should i use. Now i'm ASP.NET (MVC2) + WPF and a bit Silverlight programmer and after about 3 months, while i's developing asp.mvc website, i've learnt many interesting things about building modular and extensible applications (MEF and Prism), about architecture (DI, IoC frameworks (ninject, Castle WIndsor, StructMap), EntityFramework as ORM, NHibernate)... I wish i'd know them all before i've started my adventure with .NET, now my website would be quite different :)
So here i'd like to ask You- advanced java/Flex programmers what should i know if i want to start develope really good, enterprise and flexible application...
Right now i've read some informations about Hibernate as ORM, Java Spring as web framework, BlazeDs to connect spring and Flex, and... I have no idea how good programmers cope with IoC Containers in Java/Flex world. Are there any frameworks? Something like mentioned above Ninject, Castle Windsor etc?
Where should i start if i'd like to build extensible applications. Divided on modules which can be developed by separated programmers' groups. Is there something like MEF or Prism for Java? Or mayby there are some other, better ways. I read something about OSGi (used in Eclipse) but i don't know is it a good way to create extensible application?
Thx in advance.
generally speaking I would go with
I will answer your question short, with general issues, not drilling down too much.
I don't want to confuse you at this stage.
Flex
MVC framework (RobotLegs, Cairngorm)
Modularity (Potomac or custom)
building application correctly
Java
Hibernate
remoting with flex (AMF and friends)
I think to get you started, this is great.
Also, just to agree with #flextras, I think if you already know .net, you should stick with it at first, learning flex is hard enough, learning flex and Java together is harder
When working with both, I would also

Start with Java (JVM) ecosystem

I have came from another question to this one:
How can one start with Java (JVM) ecosystem? What are beginner, intermediate and advanced knowledge-bases (bags!)? To be honest Java ecosystem was always a bit confusing to me, so it would be very helpful to provide some "reference references" and "defacto tutorials" for learning (curve!) JVM.
Note: I want to use JVM with Scala (or Clojure) but not Java itself.
I am a C# developer (WPF, Windows Forms, ASP.NET, Web Services, ... like that).
The Java Tutorial is a good place to start.
Update: you have enough questions for about a dozen posts here ;-) Honestly, you should do some research yourself (Google is your friend), then ask more specific, targeted questions; that would yield better results. (e.g. I don't think anyone can answer your question regarding Swing or JavaFX without more specific details about what you are trying to achieve.) I try to give a few pointers below, about areas I know to some extent.
for servlets and other web frameworks, here is a bunch of tutorials.
Tomcat and Jetty are both application servers.
there are a lot of different web frameworks, because different people have differing preferences, ideas and style, so many have created their own framework. It can be confusing, but at least there is choice :-)
for persistence, apart from JDBC, ORM frameworks are another strong option. I use Hibernate and I can recommend it; in a bigger project it can make your life much easier. Ultimately it depends on your specific project and constraints; there is no single right choice.
AFAIK Java has no equivalent of LINQ.
See also this post for further recommendations.
Java based web applications need to run inside of a web container such as Jetty or Tomcat.
You build your app and deploy it to the container which hosts the application at runtime.
Pure/plain JDBC should only be used directly by simple applications or integration layers that do not have access to the class model.
Most applications that I have seen have used some kind of Object Relational Mapping framework which models the entities as classes at a higher level than plain old JDBC.
Popular O/R frameworks include:
hibernate
toplink
datanucleus
cayenne
For web based development, you could start with AppFuse, see the quickstart guide.
AppFuse is a templating system that generates the skeleton of an application for you.
Then look deeper into what has been generated, and see what frameworks they are using.
AppFuse lets you choose between different technology stacks, so you could compare.
I haven't seen AppFuse support for Guice or GWT.
Guice is a Dependency Injection framework, others that could be used instead are Spring or picocontainer.
Another investigative approach that you could try would be starting with AndroMDA, which is a model driven architecture framework - you start with a UML model and then generate or forward engineer a working application.
AndroMDA also lets you control the choice of the underlying framework implementations by configuring different cartridges, once again you should dig deeper to see what they are using in the generated application.
If you are looking for a basic introduction, then the Java Tutorials are nice. To do other things like Java Web Development, then your going to need to consult google for the respective technology since they vary so widely.
One book though that I highly recommend taking a look at is Java Concurrency in Practice
Yeah, it is almost impossible for new guys to get started. This is going to drive away a lot of developers, and Java is in danger of not having constant new bloods. The old farts would love that, it's great for career security, and that's why they are making Java more and more complicated.

Django or RoR like common Java or ASP web-frameworks

I am a fan of big agile software development methodology and love to develop web pages using Django and RoR. However, it creates a big constrain as there are really very few Django or RoR developers to hire.
For a new web project, we will be hiring developers and even though I would love to see these employees using such tools, sadly it will be either impossible to find related developers or even if we find them(virtually impossible for my country), we will be very dependant on them.
Also time is a big constrain thus considering "finding clever programmers and letting them learn these technologies" is not an option.
Under these conditions, I would like to hear common Java or .Net alternatives and why would you suggest them.
I can think of Spring, Hibernate, Stripes, Struts and Wicket for Java
Also Microsoft ASP.NET MVC looks really promising.
EDIT: I Need to mention that I won't be an active developer for this project but act as a manager.
Regards
If you want Java, Spring, and Hibernate with RoR-like "convention over coding", why not try Grails? It's based on Java, Groovy, Spring, and Hibernate. You'll be able to get a lift similar to RoR for web-based CRUD apps.
ASP.NET MVC is quite promising. It "borrows" a lot of its ideas from the Rails framework and community. I am a ASP.NET (MVC)/C# developer primarily, but had the opportunity of doing some Rails development before I moved from traditional ASP.NET WebForms to ASP.NET MVC. After doing development in Rails, I found it quite easy to make the transition to ASP.NET MVC.
Also, I haven't done any web development in Java, but since there are so many web frameworks to choose from, you may not find enough Java developers to build out and ramp up a team quickly enough, all with experience in the same Java web framework.
web4j might be what you're asking for. However, it is not that popular and your developers will have to learn the framework too. I think it will be faster than learning a new language though.
I believe that building a framework in java or .Net that resembles RoR or DJango is very difficult. This because the languages designs are so different. Also because Java and .Net target the enterprise market, which usually requires more robustness.
Agile development really has nothing to do with what languages or tools you're using. Of course, certain tools and methodologies make it easier (MVC tends to make it easier), but my suggestions would be as such:
Go with ASP.NET MVC. It borrows a lot of the good stuff from Rails, and provides some powerful tools that will make developing ASP very friendly to everyone involved.
Use an agile planning tool. I suggest Skinnyboard, as it allows you to do true agile planning.
Don't fret about the tech! Agile is how you manage the project, not the technologies that the project is using.
You're asking how to develop webapps fast with enterprise frameworks vs RoR.
My initial answer is you can't expect to develop webapps in .NET/(Spring/Hiberbnate) as you would for RoR. Lots more setup, lots more to learn and understand at a deeper level. Lots of configuration.
I don't see php here. I assume a lot more people use php. Why not look at php and symfony. Symfony derives its fundamentals from RoR.
If none of the above fit the bill I'd go for Spring/Hibernate/MySQL/Tomcat. We developed multiple largescale web apps with that stack in an agile Scrum/Sprint scenerio
For Java, VRaptor has a controller+view implementation similar to rails actionpack, and uses a DI Container based on Spring. Also has some nice integration with Hibernate/JPA, XML/JSON serialization using XStream, helpers for Integration Tests and a pretty nice documentation.
Haven't tried it myself, but Play! Framework for Java looks very promising. RESTful architecture, MVC and a neat admin interface (like Django) built in.
A platform based on Seam/Hibernate/JBoss sounds exactly like what you're looking for.
Seam is the web framework, Hibernate is the object relational model, and JBoss is the server container.
After coming up with a database schema, you can even use seam-gen to reverse engineer it and do your "scaffolding."
It's flexible, enterprise level, and free to work with.
Furthermore, Java developers are everywhere.

Can Spring and SWT work together for Java Desktop Applications?

I am going to design Java Desktop Application. While I was design web application, I got plenty of choice, e.g. Spring, Strut etc. However, for Java Desktop (which is new to me), I don't find any.
Is that Eclipse RCP a Java Desktop Framework, which works like Spring mvc in Web apps?
I wonder, can I use Spring to enjoy the benefit of IOC, together with Eclipse RCP to enjoy the benefit of both world?
Please advise. Thanks.
In java desktop land, you have 2 major choices : Swing or SWT. I'm ignoring AWT on this one. QTJambi is not that used in Java.
Most Java desktop applications use Java Swing. Nothing is preventing you from using an IOC container in a desktop application. In general, IOC container are used mostly to store event listeners, actions in desktop applications and barely UI components.
There are many attempts to create Swing RCP frameworks but most Java desktop applications kind of roll their own.
You definitely can use Spring and reap the benefits of its various features including IoC. Spring is definitely not confined to the webworld, that's one of its great selling features is it's the swiss army knife of Java frameworks.
You realize, of course, that SWT is not portable the way that Swing is.
Yes, you can use Spring with SWT, but there's no built-in MVC framework to help you. You might find the Spring Rich Client module helpful.
Here's a simple example - one person's opinion.

Categories

Resources