This week's book giveaway is in the Mac OS forum. We're giving away four copies of a choice of "Take Control of Upgrading to Yosemite" or "Take Control of Automating Your Mac" and have Joe Kissell on-line! See this thread for details.
I have completed and submitted my SCJD assignment with a stand-alone mode, a network client mode, and a network server mode. My submission has only one integrated J2SE application that supports all 3 modes. If I were deploying instances of my application on different computers as individual network clients, then the entire application would be deployed to each one of the different computers. My entire application would be deployed to a single JVM on a separate computer when it operates in network server mode.
Because of the fact that my entire application is deployed to the network clients and also to the network server, I'm having trouble understanding the concept of thin client / fat client. If I were supporting a private network and I had to perform an update on either client or server, then I would have to update every instance of the application on all computers. The impact would be similar no matter how small of an update was needed.
Normally you would have 2 application jars for networked mode: the runme_client.jar containing common classes + gui-related classes and the runme_server.jar containing common classes + server-related classes. When you only make a change to your gui, you will only need to update your clients (through java web start for example). When you change your server from using a flat file to a rdbms (or a change of the business logic: implement 48-hours rule for example), then only an update of the server is required.
If you change something to the common classes (add a new method to the business service, change some parameters of existing method) you'll have to update both server and clients.
And just for convenience and simplicity you have to provide 1 runme.jar containing the executable code.
Roel De Nijs wrote: Normally you would have 2 application jars for networked mode: the runme_client.jar containing common classes + gui-related classes and the runme_server.jar containing common classes + server-related classes.
When you use the word "Normally", do you mean that this particular method is used by most people on their SCJD project? I don't know how to invoke a .jar file within a .jar file using the command line %>java -jar runme.jar server (for instance).
For example I'm working now on a client/server application (with a thin client). We have 3 projects: app-client, app-common and app-server. The app-common project is referenced both by app-client and app-server. When we deploy we create a runme-client.jar (containing all classes and other files from app-client and app-common) and a runme-server.jar (containing all classes and other files from app-server and app-common).
When we want to run our client: java -jar runme-client.jar
When we want to run our server: java -jar runme-server.jar
So these jars are both executable trhough the java command with the -jar option (and are not bundled together in a runme.jar). For the SCJD project you just need one file (the runme.jar which should run in 3 modes, depending on the command line argument), but that's not how you deploy a client/server application in the real world. It's just 1 executable jar for simplicity (like I said already and hopefully explained a bit better now).
Joined: Jun 17, 2009
Your explanation answers my question. I know that your native language isn't English. Your command of the English language amazes me.
Harry Henriques wrote:Your command of the English language amazes me.
Thanks for these kind words. I'm always trying to express my opinions and thoughts as good as I can (at secondary school English was the worst of the 3 extra languages I got, but English is everywhere and certainly in IT, so just by using it a lot it now became the best of these 3 languages, because I hardly use the other ones).