i am planning to develop desktop application using java code, and wanted to use any ready
made framework and then i got know about eclipse RCP / eclipse scout but i am in doubt that which framework should i use whether eclipse rcp or eclipse scout ? could somebody suggest me please.
first of all I'd like to add another option: Eclipse Riena.
Eclipse Riena is comparable to Eclipse Scout as it is based on Eclipse RCP and provides some useful abstractions. You should have a look at it.
But to give you some help deciding which one to use:
If you are doing your first steps in Eclipse RCP, I would suggest that you first get your hands dirty with a little bit of plain Eclipse RCP. There is some complexity which will get back to you if just start with a higher level framework like Scout/Riena.
Depending on plans with your desktop application, this might already be good enough.
Scout/Riena do help you with more advanced topics like reuse/standardization, remoting, proven application architecture. But like most frameworks, you lose some flexibility.
What I especially like about Eclipse Riena:
Focus on easy to use GUI (will not fit for every project)
Abstraction over SWT/JFace (Ridgets) provides nice facility for controller tests, rendering the need for GUI tests to a minimum
Nice API to (dynamically ) structure and validate your application
Simplify remoting (no Java EE container dependencies on the client)
You can use parts of Riena independently. Say you can use the ridgets without adding the whole bunch of other perhaps not needed stuff.
What I like about Eclipse Scout
Strong focus on integration in Java EE environment
Wizards all over: Quite simple to create a first and second shot of your GUI
Supports swap of your GUI technology: You can move from SWT to Swing quite swiftly, though I wouldn't bet that is easy for a large application. ;)
HTH
Regards,
Holger
I can't comment/judge about your comments regarding Riena. However, I'd like to add some comments/clarifications regarding Scout
The fact that Scout comes with the Scout SDK tooling is a big help to beginners. This makes it ideal to get started with writing desktop applications. As the output of all the wizards is only Java code and some needed wiring in plugin.xml etc. it means that you're free to do Scout applications without using the Scout SDK (you can even have mixed teams working on the same code). This is possible as the Scout application model is just a bunch of Java classes.
Holger rightly mentions that you can swap the UI technology with Scout applications. This is possible as the programmers writes the model of the UI. For each supported UI technology (currently Swing, SWT, RAP (for web applications)) a specific plugin will actually draw the UI depending on the available UI model. This is a very clean separation of the UI technology and the application model. Therefore swapping works even for very large applications (Of course there are some exceptions to this rule: If your desktop application has some Microsoft Office integration part on the client side you will find it hard to support that in a web application).
Try some of the Scout tutorials and let us know what you think in the forum.
Best regards
Matthias
Related
Is NetBeans platform for creating only rich client applications or we can also create single frame applications? There is a wizard for Swing Application Framework based application, but is this possible to create the same single frame application using NetBeans platform. If yes, then please guide me how can I create one. Thanks.
First of all NetBeans is a impressive, powerful but complex platform to build java gui applications.
The main problem of all development platforms is, that there are some trade offs to be made to unleash the real power of the platform.
It is hard to tell if NetBeans Platform is an overkill for your needs. But the introduction videos and tutorials are great instruments to get a feeling of the programming model and runtime environment. They helped me a lot at the beginning.
If you have concrete questions afterwards feel free to ask.
Netbeans Application quickstart guide
I'm working on a swing application. I don't want to migrate it to SWT, but I'd like to use some benefits of Eclipse RCP application. Especially, I want to use the update technology to distribute application updates.
It would be great if you knew a tutorial on how to build an Eclipse RCP application that can start a custom GUI based on Swing.
Uhm... I don't think you'll be able to get there with the eclipse rcp...
There's a lot you'd have to adopt, including the whole OSGI structure for your app -- if you're unwilling to change your UI toolkit you've probably already got too much infrastructure in place to want to adopt that much of the RCP.
If it's just swing your married too for whatever reason, look into the netbeans rcp.
If it's just updating you want... there's more then 1 sparkle implementation for java.
Check this:
http://www.eclipse.org/articles/article.php?file=Article-Swing-SWT-Integration/index.html
However, I strongly advise against using them. You will end up with a lot of issues with platform independence. If you're just aiming at Windows, you might be fine.
I agree with lscoughlin, you're getting way too much overhead for that bit of functionality. You can always try to take the bits you need out of the Eclipse/Equinox project, thereby building a leaner solution. Be aware of licensing then. Looking at some parts of the code for inspiration can be helpful too, but it's a huge project.
Tough task... but you can try qwylt.
It is a framework based on Equinox (Eclipse OSGi implementation). Hopefully it will provide enough functionality for you.
Generally your request could be realized with the new Eclipse 4. In the new model all graphical output is done with so called Renderers which render the application model into the grapical output you see with your application. Lars Vogel has a Tutorial on those and Kai Tödter even did a brief article on different renderers in JavaFX 2.0, Swing & SWT Renderers for the Eclipse 4.x Application Platform.
He also did a basic SWING renderer which is available on https://github.com/toedter/e4-rendering I can however not tell on how stable this renderer is and to what extent it covers all application model elements provided by e4.
I'm a developing primary Java webapplications at work. I would like to start creating a little java desktop app. It should be a simple CRUD app with database connection, 2 - 3 forms and a smart stats page. To be honest: I'm kinda lost in this topic. I've took some time to guide through swing but the tutorials are all old and most of the stuff seems to be very unhandy. Aren't there any swing frameworks or somethingelse?
Vogella gives a good introduction into Eclipse RCP development but this all seems too much for my use at home.
What I'm searching is a easy/light way to create a desktop app. Which options are available in this topic? Would be glad if someone could share some experiences with Swing or Eclipse RCP and if its worth to spend time into getting in of this.
Thanks
For a simple application like yours, Eclipse RCP is just overkill. Its a very high level framework. SWT is a good option. If you have any experience with Swing or SWT, I suggest you stick to it. You should also look into MiGLayout.
You might consider JavaFX. I haven't yet had time to try it myself, but I hear good things about the ease of use and capabilities.
Eclipse RCP is quite straightforward IMHO, you could always start with a Mail Template from the new Project Wizard. If youre looking for sth a little bit more lighweight you could try Spring Application Framework. e4 makes it considerably easier to develop RCP "on the fast lane". You could try this excellent Vogella tutorial
If you don't mind using Groovy try Griffon.
I am in the process of porting my Swing database application to the Netbeans RCP Platform.
The Netbeans RCP is similar to Eclipse RCP but it is fully based on Swing (Swing ships with the JRE/JDK , so it is more platform independent).
If you are a beginner to Swing, I would certainly recommend using the Netbeans RCP because it automatically solves a lot of beginner's problems and enforces good practices. It also has some powerful GUI elements (like Outline, option-button) which are not present in plain-Swing. The netbeans.org has ample video tutorials to get started.
Also, with the Netbeans RCP, you get some extra goodies which may come useful, like modular JavaHelp integration for online help in the client.
Also, Netbeans can generate easily deployable Webstart package or platform-dependent installers for deploying the desktop app (I recommend Webstart, that is the easiest way to distribute your application, only Java needs to be installed beforehand and that is usually doable even for the dumbest of users).
Does anyone have any experience with a really good RIA platform. I'm going to begin developing an application, and I intend to use Netbeans RCP for the thick client. I'd also like to create a RIA version of the same app. I've looked around for a RIA framework that rivals what you can get with the Netbeans RCP, and really haven't found one. My requirements are as follows.
Modular - I would like to be able to add and remove features without recompiling
Out of the box features - I'd like to have feature out of the box that are similar to Netbeans RCP (or most any other RCP), such as a menu system built in, a windowing system (allowing docking and remembering where windows were between sessions), Authentication and Authorization support out of the box, as well as the "Options' pane support (I really like how I can add amodule, and have that module expose options through the standard "options" dialog).
Actions and commands - I'd like to be able to handle actions from other modules without needing to couple the action to the other module.
I would like to deploy the app through GlassFish, but that's not a deal breaker.
Modern - the framework should use the latest standards, and I'm planning on moving to J2EE7 as soon as I can, so the platform must be actively updated to support such a migration.
I'm willing to pay, but the license must not be "per server" or "per instance"
Java isn't a must but I'm planning on using java for the rest of the app (services layer) and the Netbeans RCP front end.
I've been a .net developer for the last 6 years, and have just recently looked into the world of java, and I'm really amazed at the rich community, I thought .net had a large open source community, but the java one is orders of magnitude bigger. I don't know of anything even close to the Netbeans RCP in the .net community, let alone a RIA version.
I've looked at a few frameworks, but most of them seem to be mostly libraries that you can use to build applications, I really don't want to spend the time and maintanance cost to build the infrastructure listed above. Things I've looked at are....
Tepestry
"SmartClient"
GWT
Wicket
These all seem to be good building block, but I want an out of the box solution. The application will be mostly CRUD operations, but I will also be streaming video through the app, as well as handling alerts and events from the server.
Thanks for any advice
Joshua
Eclipse with the GWT plugin is fairly easy to get running out of the box. Step through the GWT tutorial first and you'll be ready to go. I realize you've already looked at GWT but the Eclipse plugin simplifies a lot of grunt work.
Indeed. GWT Eclipse plugin simplifies compilation, depoloying and running them (Jetty). It also has App Engine support.
I want to take the next step in java web development, I am hoping to get insight & feedback on: what my next steps should be and how best to take them.
While learning the basics of java web development, I put together a simple web app that performs simple accounting and financial calculations. The web app is on a single jvm, uses Tomcat, and has standard web functionality - i.e. login/logout, basic security, etc.
How can I make this web app more "enterprise ready" - distribute functionality of tiers over different servers/jvms, HA, balance-able, etc.
What do I need to know/learn? - i.e. EJB3 or Spring Framework (seems spring is better option), REST and/or SOAP, etc.
How would one recommend (books, websites, etc.) I learn the "requirements" (see preceding line)?
Thanks!
In my opinion, you should try different approaches for a same problem, so you could compare the pros and cons of different tools and frameworks.
For instance, try to build an application using EJB, and then the same application using Spring. Take the presentation layer of your code written with JSF and then rewrite it using Tapestry.
I think this will be very helpful to you, as you'll be able to make best decisions when choosing tools for your future developments.
A few things to consider, as food for thought:
How good is the error handling/logging of the application? For example, if the user tries to put in X in for a currency value, what does the application do?
What is configurable within the application from the user and what is in configuration files and what is in a database with regards to configuration? Do you have passwords encrypted within the application?
What patterns would used in building this application? Are there patterns you could see using now that you have a prototype?
Is this application ready to handle different currencies and languages?
What happens if someone leaves the screen for a few hours and tries to use a form?
What administrative functionality does the application have?
Does it handle the case where the user has JavaScript disabled?
What are the limitations of your application, IOW what can't it handle the way it is?
Have you considered trying to write a manual for the application?
EJB or Spring? gets asked quite a lot nowadays, here's a decent related question about them.
Have some real users using your application. You'll be amazed on how many "new" features/improvements can be performed in your app ( and the technologies you'll learn to satisfy those requirements ) by having real users using it.
I would suggest the following books/tutorials are a must for every Java developer:
Manning: Spring in Action - 2nd edition
Manning: Java Persistence with Hibernate
Core JavaServer Faces
Adobe Flex ( Adobe website video tutorials )
Effective Java
Apart from the standard technologies above you must be familiar with
Different testing frameworks , JUnit is a must
Build tools like ANT and Maven
Also you can build small projects by downloading trial versions of MyEclipse or Flex Builder.
I suggest that you create small java experiment projects for each new framework/library that you want to learn.
I've had good success using maven to help me quickly and consistently create java projects that I use to experiment with one technology at a time, such as Spring, Hibernate, etc. I use maven's site life cycle to record notes about what I learned and to document how to build and run each project. So, now I have 20 or so projects that I can use as baseline projects, one for each framework, to build upon.
Also, I prefer buying and reading books rather than relying on google and websites to learn new frameworks. Seems that I'm able to learn a lot faster this way.
I also suggest that you write web apps that you, yourself, would want to use. Or write a web app that solves a problem you've been having. I've found that I learn a lot more this way rather than simply copying and pasting from examples in a text book.
Hope that helps,
- Dave
Spring or Tapestry would be good options for new learnings. Does your app use any web services? If not work those in. Work with other application servers like JBoss and Weblogic and note their nuances with java. I'd also recommend learning Maven and work that into your build/deploy process.
Have fun,
Mike
You could vastly reduce the time taken to build your apps by learning some Test-Driven Development.
Try learning JUnit - it's becoming a core skill now, even in unagile shops.
If you're focussing on the web, try out Selenium - which has a Java controller to drive your tests from Java test cases.
After investing a bit of time in TDD will pay off no matter which frameworks or apps you work on. If you learn to test drive your code, you'll end up with smaller, cleaner code and less debugging.
You might look at AppFuse, which is a bundle of Java things together.
Or, you might take a look at a few more technologies to play with and add in:
Version Control - SVN
Tools - Ant or Maven
Framework - Spring, Seam, Struts
ORM - Hibernate or iBatis
Test Driven Development - JUnit, Emma
Continuous Integration - Hudson
I'd also read the Pragmatic Programmer and/or Code Complete.
Allow me to state that "enterprise"-ready does not necessarily imply scale-out solutions, many, many enterprise Java applications are running on larger systems requiring long-running-systems skill of their own.
I recommend mastering the Java language and runtime, understanding how bytecodes and loading traverse the JVM vs. focus on any given framework.
Speaking of frameworks and if you really have the time, try recreating an application framework yourself. Try and re-invent the wheel. IMO it is an excellent lesson in why frameworks themselves exist and teaches one to employ the features instead of always trying to work around them.
One more thing, never forget the database. I don't care what that looks like Oracle, MySQL or NoSQL, but become also an equal master at the data store.