aspose file tools*
The moose likes Developer Certification (SCJD/OCMJD) and the fly likes I don't understand the thin client / fat client concept Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Certification » Developer Certification (SCJD/OCMJD)
Bookmark "I don Watch "I don New topic
Author

I don't understand the thin client / fat client concept

Harry Henriques
Ranch Hand

Joined: Jun 17, 2009
Posts: 206
Hello bloggers,

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.

Any comments?

Best regards,
Harry Henriques
Roel De Nijs
Bartender

Joined: Jul 19, 2004
Posts: 5407
    
  13

Hi Harry,

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.

Kind regards,
Roel


SCJA, SCJP (1.4 | 5.0 | 6.0), SCJD
http://www.javaroe.be/
Harry Henriques
Ranch Hand

Joined: Jun 17, 2009
Posts: 206
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.


Hi Roel,

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).

Thanks for your help.
Harry Henriques
Roel De Nijs
Bartender

Joined: Jul 19, 2004
Posts: 5407
    
  13

Hi Harry,

No, I mean in the real world

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).

Kind regards,
Roel
Harry Henriques
Ranch Hand

Joined: Jun 17, 2009
Posts: 206
Thanks Roel,

Your explanation answers my question. I know that your native language isn't English. Your command of the English language amazes me.

Best regards,
Harry Henriques
Roberto Perillo
Bartender

Joined: Dec 28, 2007
Posts: 2266
    
    3

Howdy, Harry!

Terminology Clarification: just an additional reading!


Cheers, Bob "John Lennon" Perillo
SCJP, SCWCD, SCJD, SCBCD - Daileon: A Tool for Enabling Domain Annotations
Roel De Nijs
Bartender

Joined: Jul 19, 2004
Posts: 5407
    
  13

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).

Kind regards,
Roel
Andy Jung
Ranch Hand

Joined: Feb 07, 2010
Posts: 150
Hi Roel,

is this something (normally having separate jars) you should include in your choices.txt?

Kind regards,
Andy


SCJP, SCJD
Roel De Nijs
Bartender

Joined: Jul 19, 2004
Posts: 5407
    
  13

I didn't mention it, because it is a must requirement to package your class files in a single jar (so it's not a decision you had to make)
 
Don't get me started about those stupid light bulbs.
 
subject: I don't understand the thin client / fat client concept