I'm about to start an academic project related to rich internet applications.
I thought that using a web application framework will save me some time and allow me to better structure my code. I've spend the last few days in searching for the best solution.
There are certainly lot of choices and I'm basically lost..
I'm equally good in programming in PHP and Java and have knowledge of JavaScript as well.
I would like to use a framework that has good support of RIA technologies and HTML5.
I have experience in Joomla development but CMS is a different case.
What would you suggest for my case?
Thanks!
While you could consider one of the many questions concerning PHP frameworks, I would (as I always have) recommend CodeIgniter for the beginner, the intermediate, and the expert PHP developer.
Choose a good MVC framework for PHP. CakePHP, Zend, CodeIgniter, and Symfony are the industry leaders.
Grails. If you are already familiar with Java, Spring, Dependency Injection, and Hibernate it will save you a lot of time. Grails promotes MVC architecture and convention over configuration. Groovy is very easy for Java devs to pick up.
Related
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
I have developed many desktop applications in Swing, even those a bit more complex, with Hibernate and Spring integration. I found out that many things repeats and should be done quickly and in convenient way, like application lifecycle, logging, alerts, authorisation, forms and their validation. I started looking for frameworks. I met Swing Application Framework which is dead since several years, as it turned out. Spring RCP really met with my expectations, especially creating forms basing on Java Bean model is what I liked, but I realised it is dead too. Netbeans RCP is not for me, I am using Eclipse and I don't want to use another IDE for desktop development. I am not really excited about Eclipse RCP, I got feeling that it is too Eclipse oriented, I would prefer something low coupled to any tool, besides it is not so straightforward to learn.
I am surprised that there is so weak support for developing desktop-based business applications in Java. It's like Java was only used in web environment. What is the preferred language for making such apps then? And if I want to stay with Java, is there a chance to find something similar to Spring RCP (so far I couldn't)?
i asked a similar question some time ago, see Swing desktop-development if you are interested.
My conclusion was/is that there simply are no frameworks that can do for your desktop-application, what any of the bazillion great WEBframeworks can do for your webapplication. It seems absurd, but in my experience due to the great web-frameworks and the lack of desktop-frameworks it has become much easier to develop a webapplication.
I have been using Spring-RCP for 2 projects. It was great, but is pretty much unusable nowadays, because you are stuck to spring 2.5 with it. Also it "feels" a bit slow to me and is really memory hungry on 64-bit machines, which is a Spring-Swing problem most likely: https://jira.springsource.org/browse/SPR-9628
I waited for Project Valkyrie, but it seems to be dead already
I think you will not find anything that completely covers your requirements. http://swingx.java.net/ could maybe offer you a few GUI-Widgets, like JXDatePicker. I also recommend JGoodies Binding and JGoodies Form, both are great. IF you use a client-server application i highly recommend using Spring-Remoting (e.g. HTTP Invoker) with Spring-Security. Really makes things simpler.
I enjoy developing desktop-apps with Swing, but unfortunatly you really have to "go the extra mile". Client-Server-communication, security or even validation are only a few examples of the many things that seem overcomplicated these days (compared to modern webframeworks). Also you might find out that it is not as easy to automatically build, sign and deploy an application with java-webstart as it should be.
Spring-RCP was the closest thing to a "complete" desktop-framework that i found so far and it has been dead for years.
Good Luck!
Please try griffon. This is based on groovy language and inspired by grails framework. It runs on JVM, language is very much friendly for java programmers.
Quote from the site
Griffon is an application framework for developing desktop
applications in the JVM, with Groovy being the primary language of
choice. Inspired by Grails, Griffon follows the Convention over
Configuration paradigm, paired with an intuitive MVC architecture and
a command line interface.
....
The architecture is very much extensible.
The Griffon framework is extensible via Plugins. There are many to
choose from. For example you'll find plugins for 3rd party Swing
components like Swingx, Jide and Macwidgets; persistence related
plugins like DataSource, GSQL, Hibernate among others; 3D graphics and
animation support is possible via JOGL, LWJGL and Processing. And many
more!
It mostly depends on the size of the application.
For smaller and medium sized apps it makes sense to use JavaFX 2 that does not use a differnt language, you can start of by some of the basic tutorials .
As you have mentioned for Enterprise level application Eclipse RCP and Netbeans RCP are a good pick.
Netbeans RCP is lot simpler for development, you should not dismiss it just because of the IDE preferences. There is a free book about it that is a good starting point.
There is also the option of e4 that should be significant improvement for eclipse but I can't say that I have used it yet
Related resource worth looking might be :
http://netbeans.dzone.com/why-from-eclipse-rcp-to-netbeans-platform
Netbeans RCP vs Eclipse RCP
Check out JGoodies. Not only is the Look and Feel much better they also offer a framework to design Swing apps.
The big issue when it comes to desktop applications is that it really depends on what you're trying to design. Unlike webapps where it's webpage->request->webpage, desktop application can pretty much do anything. There is no standard cycle, even for business apps. It's much much more like AJAX than say your normal Java EE or PHP webapp. And how many AJAX libraries actually offer a framework other than calling and updating specific components.
You could have menus, buttons, panels being updated, things being rendered on the fly, graphs changing, data being updated, etc.
If you're just looking for forms, then JGoodies is probably your best bet.
I don't know of any framework as such, but Netbeans provides a drag and drop wizard for Swing components. Eclipse also has similar plugin but it is based on the Netbeans plugin.
I found out that many things repeats and should be done quickly and in convenient way, like application lifecycle, logging, alerts, authorisation, forms and their validation.
I'd recommend to extract these into your personal "Core" library that you can share and use across all your projects. Since you already implemented the things you're talking about, it should be easier to generalize them than study a completely new framework. Probably, a private Maven project?
The development focus is moving towards Web and Mobile, so we shouldn't expect any considerable efforts from framework vendors for Desktop.
I have been developing web applications for almost 6 years using the LAMP Stack, and lately I've been using ZEND Framework.
It has a steep learning curve, and it took from me a while untill I figured out its in/outs and the logic behind its MVC Structure.
I've chosen ZF although it is more complex than many other PHP Frameworks because its likely the one which will survive longer.
Currently, I am intending to learn Java J2EE
Trying to invest my previous knowledge with ZEND Framework extensively, so I really need to know what its J2EE framework equivalent
And Please, I don't wana know about obscure frameworks, or frameworks which no body uses but the gurus,or framweworks created by the insiders to solve problems of their own, or frameworks which are just born to die, or frameworks with no huge developers base, or young cool frameworks which need years to be stable.
I need to know well known frameworks which are used to create applications for enterprises, which will not gonna die at least for the coming 20 years, hopefully.
I sacrifice simplicity for the sake of stability and career growth..
I intend to learn one framework and just only one, and I will stick to it for life.
Botton Line: I want to learn the framework which will survive for long, competes aggressively, updated regularly, and which eliminates the need of me learning new framework, and brand new APIs every single year.
If possible, I want complete details, and true guidance from experienced programmers who have seen it all and knew it very well.
Thank you all in advance.
Hope this link is useful - https://stackoverflow.com/questions/959950/recommend-a-java-framework
Though I don't think there is a zend-framework equivalent for Java, only thing I could think of a good framework is Spring used heavily.
I think Tapestry can also be a place to start.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
I am new to Java framework.
I am looking for a good Java framework to help me build a JSP web site.
I googled for Java framework and it returned a few related terms for me:
struts, Cocoon, WebWork.
I have no clue which of them is for beginning learner.
Do I need to download netBean or eclipse to work along with any of these Java Framework? I need an auto-complete tool that helps when typing hundreds of lines of code.
Please advise and help.
Thanks
Edited reason,
I have just found out that netBean has got Struts Java framework, what do you think of it? Is it good for beginning learner?
The Play framework makes it easier to build Web applications with Java. I havn't tried it though, but I feel it's "with" the present day web-dev framework ecosystem. It seems inspired by Rails.
Very much depends on your concrete needs but I'd invest some time into looking at Spring. It is a really great and flexible framework that promotes best practices.
I admit it will be a bit difficult to understand initially, especially if you're a beginner. But if you're willing to learn it's real fun. For using Spring framework you can use any arbitrary IDE, it really doesn't matter, although personally I prefer the Eclipse IDE, in this special case the Edition for Java EE developers.
As Juri said, Spring is worth looking at. For the specifics of web development, take a look at the Spring MVC tutorial.
Spring is pretty good. Struts is another framework with a pretty easier learning curve IMO.
#kwokwai: I have seen your comment on #Juri post.
Spring IDE would be helpful if you plan to choose Spring for your application.
Grails is my favorite.
While it's not Java the language, it's Java the platform. It compiles to Java bytecode and runs on any appserver / servlet engine. And integrates well with existing Java code.
Grails is more than just a web framework, it's a complete web application stack. But you can use only the web part if you like.
Grails really brings speed of development known to e.g. Rails to the Java platform.
During development, you can edit your controllers and services, and just hit reload in the browser, no redeploy needed (as you also can in The Play framework).
Tag libraries are really easy to create. And being able to write Groovy code rather than EL in the views (GSP, Grails' variant of JSP) is really powerful.
I would recommend Apache Wicket, its very easy, no XML-Configuration-OVerhead. Just have a look a the examples on the website.
Play! Framework. This is by far the easiest one to use. Been a user of Apache Turbine (since 2002), Apache Struts, CakePHP, I finally landed on Play!. You can watch a 10 mins video on http://www.playframework.org/ but here I would like to mention some of my gotchas:
Easy, actually too easy to use. Many people's first impression on Play is it makes web dev become fun again on Java
Scalable. Because of the stateless model, the only thing you need to do to scale your 5 page hello world web app into a million vists per day busy site is to increase your box and running more instance of your app. You don't need to change one line of code to reach there.
Performance. Check this to see how Play! outperforms it's competitors when you use it as a standalone http server
Very active community and very good contributors. The questions you post on Play's google group get answered promptly. And you can find many interesting stuff contributed by community at here
You can also take a look at Spring Roo. It allows you work with Spring in a very lightweight fashion. In terms of ease of use this seems on par with Play framework or even better (due to tools support). Spring itself is a very established application framework and you are very likely to work with it during your professional career.
Although I'm spring user, I would encourage you to look at JBoss Seam. This framework is built on top of other powerful technologies, such as JPA, EJB3 and JSF. You will spent some time learning it of course. And keep in mind, that in order to run its applications, you will need java EE server such as JBoss, not an ordinary servlet container like Tomcat (actually you can run Seam on Tomcat, but you will get into some problems). And java EE hosting costs usually ~two times as much as Tomcat hosting.
Here is the comparison of Spring and Seam:
http://www.andygibson.net/articles/seam_spring_comparison
Just google seam vs spring if you want more details.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
I want to start web developing with java. I don't know how to start, what to learn,
or what is the best web framework to learn and use. Help me out?
I assume, that you're only new to web apps and not to Java itself.
For a starter, I can recommend the Apache Wicket framework for the front end. Their web site is full of examples, the mailing lists are a great place to get started, and Wicket in Action was an enjoyable read.
If you want to work with Java Server Pages (JSP), then you should definitely also include Java Server Faces (JSF) which make working with JSPs a lot easier. I can't advocate any good books to you as I went for web tutorials mainly. You might want to have a look at Apache MyFaces.
For the business logik, I guess the standard is Enterprise JavaBeans (EJB). I liked Mastering Enterprise JavaBeans 3.0. An older version of the book is available for free at TheServerSide.com. You should avoid EJB versions older than 3.0, because they are a PITA!
A separate part of the EJB 3.0 specification is the Java Persistence API 1.0 (see, e.g., Apache OpenJPA though the documentation is patchy). Other frameworks that support JPA are, e.g., Spring or JPOX (now being called DataNucleus).
Finally, if you want an application server for testing, there are JBoss by RedHat, SUN's Glassfish and Apache Geronimo (I preferred the last one, but you may have noticed my preference for Apache projects already ;-))
Good luck!
Well if you do not know much about Java, then first I suggest going back and getting your foundation in Java strong first (cause after all JSPs are java code embedded inside HTML), then proceed to learning about servlets and then move on to JSPs.
As far as learning JSPs is concerned, I would suggest buy a book, Head First Servlets and JSP is pretty good book.
Head First Servlets and JSP
JSP Tutorial
Getting Started with Web application - JSP/Servlet
I think Grails is a great way to get started. You can use the scaffolding to get started quickly, which allows you to dip down into the more complex aspects of Java web development at your own pace. I recommend you watch this screencast to see what you think.
This is a big subject and you will need to learn a lot.
I can recommend first learning Java very well.
Head First Java - http://books.google.dk/books?id=5VTBuvfZDyoC
The Java Tutorial - http://java.sun.com/docs/books/tutorial/
You will need to be very proficient in Java, as most framework documentation expect this of you.
When you have those under your belt, you are much better equipped to determine which framework is best for you, as that very much depends on which facilities you actually need, and which you do not have any use for.
The WEB4J tool is likely worth a look.
It has a much smaller number of classes in comparison with other tools. It is "full stack", so it helps you build all parts of your web app. Thus, you don't have to learn several different tools - just one.
A college instructor related to me that he felt it was "almost perfect" for his students, since it was at just the right level, and didn't hide things behind complicated abstractions - it was plain to see how all the parts worked together.
If you know java you can always start reading this book, https://secure.manning.com/books/deshmukh It will give you the basic foundation for java web development.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
for me I will answer this question based on my experience.
so if I'm gonna start new project I will use the following technologies:
AndroMDA as MDA framework.
Spring (DI, Interceptors, Quartz, ACEGI, ... etc).
Hibernate.
JSF.
off course you might need to play with some helper frameworks/libraries such as:
Velocity.
CAS; if you need SSO.
JXLs; if you need small and easy library for generating Excel files using XLS templates.
Drools; which is Artificial Intelligence a Rule Engine that uses the Rule Based approached to implement an Expert System and is more correctly classified as a Production Rule System.
in terms of testing I will consider the following frameworks:
TestNG; you may want to use JUnit in the part of Unit Testing but TestNG is more than a unite testing framework;
WATIR or SELENIUM as web testing;
Can anybody else suggest other options?
Here are just a few answers to your question that can be found on StackOverflow.
Best Java framework?
What is the most commonly used Java web framework?
Best java mvc framework implementation for web apps
What are the best MVC web frameworks on the market?
What are the best Java social networking frameworks?
Best server-side framework for heavy AJAX Java application
What Web Application Framework for Java is Recommended?
Java Validation Frameworks
Validation Framework in Java
Java 2D Game Frameworks
What are good docking frameworks for Java/Swing?
Which framework should I choose - Seam, Wicket, JSF or GWT?
Java Frameworks War: Spring and Hibernate
Recommended framework for Java Web Services
Java Desktop application framework
Alternate Java GUI Frameworks
What’s the best mock framework for Java?
Java configuration framework
You can do this search yourself via Google
I can't be sure, what I am gonna use in the coming new project. Unless otherwise, I am planning to do RDD, also here and here.
thanks Eddie for Googling hint.
When I asked this question I was biased to Web Application Development. Now I found this can't be answered in single question.
So I guess its better to have one page categorizing the Java Frameworks (DI, Web, ORM) with links in each category pointing to other questions in stackoverflow.
however this may end with something similar to java-source.net
but categorized. so I will use your hint Eddie in my answer below:
ORM (Object Relational Mapping) frameworks:
Hibernate, iBatis, Java EE or other Java ORM tool
What Java ORM do you prefer, and why?
DI / IOC frameworks:
What DI/IoC framework should I learn next?
https://stackoverflow.com/questions/71041/which-single-ioc-di-container-would-you-recommend-using-and-why
Web frameworks:
What is the best java web application framework that goes well with xml+xslt?
Which Java Web Framework fits best with Google Guice?
https://stackoverflow.com/questions/309254/best-java-mvc-framework-implementation-for-web-apps
Which Java web framework best accommodates web designers?
Report engines:
https://stackoverflow.com/questions/238527/what-is-the-best-report-engine-for-java
What is the best free or low-cost Java reporting library (e.g. BIRT, JasperReports, etc.) for making newspaper-like reports
Testing Frameworks:
Which is the best tool for automatic GUI performance testing?
What's the best mock framework for Java?
What's the best mock framework for Java?
GUI libraries:
https://stackoverflow.com/questions/138722/which-gui-library-is-the-best-in-java
Code coverage tools:
https://stackoverflow.com/questions/39329/what-is-your-favourite-code-coverage-tools-free-and-non-free
Build tools:
What Tools Do You Recommend To Auto-Build Your Application?
Available Build Tools (make, etc)?
Static analysis tools:
What code metric(s) convince you that provided code is "crappy"?
Find bugs
if I missed something please let me know to update this answer. (thanks all)
Do not forget some static analysis tools, like for instance Findbugs.
Frameworks are means to an end. What is the project that you are trying to accomplish?
Tons of people use Spring, but for some people some obscure open-source API may save years of coding.
Before you grab the latest and greatest or not - perhaps you should note what you actually need and then find the best match ratehr than just grabbing jar files.
I would also use these tools to build the project and follow the rules.
Maven build system
Nexus repository server
Hudson CI server
PMD, FindBugs
Checkstyle
Jalopy