aspose file tools*
The moose likes Beginning Java and the fly likes Starting right, taking the long view, building a library of physical Java books to help me get there Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Java 8 in Action this week in the Java 8 forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Starting right, taking the long view, building a library of physical Java books to help me get there" Watch "Starting right, taking the long view, building a library of physical Java books to help me get there" New topic
Author

Starting right, taking the long view, building a library of physical Java books to help me get there

J Yishmeray
Greenhorn

Joined: Mar 23, 2013
Posts: 8
    
    2
My goal in posting is to get help in sketching out a sort of overview of potential candidates for the ideal library of books about Java. This would all work in support of my desire to pick up the language, and possibly certification. Recommendations would be greatly appreciated, with the full understanding that I'm a big boy now, and I will make up my own mind, but I am also glad for help along the way which I will take into account as I determine my course.

My background: I have programmed seriously since the late 1970s, and have worked in related functions in the field. From UCSD Pascal and Fortran and Bliss and PL/I in the earlier years, to C, and to JavaScript and Ruby more recently. Programming has often _not_ been a mainline activity for me, but it has always been there in the background, and I don't want it to go away entirely. As for Java, I took a whack at Head First Java some years ago and found it difficult to get over the manner of presentation - nothing unkindly meant to the authors, but it just wasn't working for me.

Many topics are subsumed in this overall goal, including things like approaches to graphics (Swing, whatever other stuff there may be), approaches to database connectivity (JDBC, whatever else), User interface design, IDEs, unit testing, notable frameworks, development methodologies and standards even. Probably several other topics are involved whose names I am not immediately aware of.

The book review section in these forums is great, but it's much like how we described the internet in the early days - it's like a library where all the books are laying there on the floor in a single pile. The data is there, but finding what you're looking for can be a challenge.

I've slogged through several dozen reviews but it is sort of hit or miss, in the sense that I cannot seem to find the overview I'd like. I am not even sure (as I alluded to above) which slots even exist in which I could categorize the books.

So I'd like the broad view of what my library should eventually contain, with brief mention of notable offerings in whatever categories might make the most sense to those of you who live here in java land. This should of course include categories I have overlooked - probably several!

What do I imagine this will all look like, looking as I am in advance, and with limited knowledge which I hope you will all help me fill in? Well, something like this:

- a section for getting to know the language - intro books, tutorials, cert prep books - not so much for non-programmers, but certainly for beginners. This might end up with one, but probably a couple of books in it. I am getting the idea that some of the books in this realm might include Thinking in Java, Deitel and Deitel, Java SE Programming Essentials, Java 7: A Beginner's Guide, and the like.

- a section for language reference - something that's pretty complete, that discusses major libraries, built-in classes, whatever. Probably several books here also. I am guessing something like the Core Java series might fit here.

- a section for special but fairly mainline topics - database connectivity, graphics/user-interface stuff, etc

- a section for more advanced stuff - performance/optimization, alternate languages aimed at the jvm such as scala, etc.

I am totally willing to do the footwork, to evaluate books recommended for consideration, and to take full responsibility for what I am doing here. From you all, all I ask is your thoughts.

I look forward to what suggestions you may have, and thanks to those of you who give them.

-- Yish
Jeanne Boyarsky
internet detective
Marshal

Joined: May 26, 2003
Posts: 29287
    
140

Yish: Welcome to CodeRanch!

For starting out with Java, I recommend "Java SE 7 Programming Essentials" (Michael Ernest). It's more like a textbook (not boring) with exercises for practicing. The style is more serious so it's very different fro the Head First series. I happen to like the Head First style, but I understand that it isn't for everyone.

If you really want a reference book, "Java The Complete Reference" (Herb Schildt) is a good one. I think you are better off spending your money on books for learning and using online for references. The Java tutorial covers most topics when you need something specific. The JavaDocs are also online for when you need to look up an API.

If you decide to get certified, see the OCAJP and OCPJP forums. I recommend waiting until you've read something about Java before thinking about certification so it isn't overwhelming. But these are the first two tests.

From your list of topics, I'd start with:
graphics/Swing - I recommend making this a low priority. Many jobs don't use Swing. I've used it once in ten years professionally.
JDBC - this is vital
Servlets/JSPs - you left out web development technology so I added it for you. This is is also vital for getting a job.
A server to deploy to locally - like Tomcat. This will be needed to test your servlets
IDEs - you don't need a book for this, but it is good to get practice with one. Preferably after you get comfortable with the syntax at a command line. Eclipse is most widely used.
unit testing - "Test Driven" or "JUnit in Action" are great starting points - you may need to skip some chapters until you learn about the technology they go with, but both are very readable.
Spring or EJB - learning one "container" will be helpful in finding a job

Two pieces of unsolicited advice:
1) The reason I'm not listing books for everything is that they don't immediately spring to mind. But more importantly, you'll know what kind of books you like once you've read a couple of books. And then you can ask if there are any books similar to it.
2) Remember to code as you learn and feel free to ask questions here at coderanch.

Good luck!


[Blog] [JavaRanch FAQ] [How To Ask Questions The Smart Way] [Book Promos]
Blogging on Certs: SCEA Part 1, Part 2 & 3, Core Spring 3, OCAJP, OCPJP beta, TOGAF part 1 and part 2
James Boswell
Bartender

Joined: Nov 09, 2011
Posts: 973
    
    5

I always found the Core Java books to be very very useful:

http://www.horstmann.com/corejava.html

Also, for enterprise Java, you cannot go wrong with http://www.coreservlets.com/
J Yishmeray
Greenhorn

Joined: Mar 23, 2013
Posts: 8
    
    2
Jeanne Boyarsky wrote:Yish: Welcome to CodeRanch!

From your list of topics, I'd start with:
graphics/Swing - I recommend making this a low priority. Many jobs don't use Swing. I've used it once in ten years professionally.
JDBC - this is vital
Servlets/JSPs - you left out web development technology so I added it for you. This is is also vital for getting a job.
A server to deploy to locally - like Tomcat. This will be needed to test your servlets
unit testing - "Test Driven" or "JUnit in Action" are great starting points - you may need to skip some chapters until you learn about the technology they go with, but both are very readable.
Spring or EJB - learning one "container" will be helpful in finding a job

Good luck!


Thank you, Jeanne, much obliged.

If I may ask
- if not Swing, then what is used for creating graphic display, user interfaces, buttons, widgets, etc?

>> **added note: I am working through Lynda.com's intro video on Java while considering all this. The author calls these things 'visual libraries' giving Swing and AWT as examples - perhaps I should be asking what visual libraries I might do well to be conversant with, even if they are part of the language already, and whether or not a book might also be available. Even knowing their names would be a start! <<

- Perhaps having a 'what will help find a job' category would be of benefit. I'll throw the Servlets/JSPs topic there, and the container topic there too (at least in my own mind)

-- Yish
Mansukhdeep Thind
Ranch Hand

Joined: Jul 27, 2010
Posts: 1157

J Yishmeray wrote:

If I may ask
- if not Swing, then what is used for creating graphic display, user interfaces, buttons, widgets, etc?
- Perhaps having a 'what will help find a job' category would be of benefit. I'll throw the Servlets/JSPs topic there, and the container topic there too (at least in my own mind)

-- Yish


There is a new technology which is gaining rapid popularity for building rich client applications in Java language. It is called JavaFX. Read this page

Just off the record, what do you do Yish? Do you run your own IT company or teach somewhere? Why are you creating this library ?


~ Mansukh
J Yishmeray
Greenhorn

Joined: Mar 23, 2013
Posts: 8
    
    2
Mansukhdeep Thind wrote:
There is a new technology which is gaining rapid popularity for building rich client applications in Java language. It is called JavaFX. Read this page

Just off the record, what do you do Yish? Do you run your own IT company or teach somewhere? Why are you creating this library ?



Thank you for that reference, Mansukhdeep,

I work for a small company in which I wear many hats: IT Director, 3d modeler and animator, technical instructor, video producer, web guy, HMPE rope eye splicing and knotting expert (yes, really!), and anything else that needs doing. I've managed to work Ruby into the flow for the 3d animation and scripting in the IT Director flow, but I don't get to do a lot of coding at present. But that could change any time, and I'd like to be ahead of the 'whoopsie' curve (i.e. my company falls on hard times) at least a little.

More on the why
- physical books - I tend to fill both of my largish displays already with what I'm working on, and would prefer not to give up screen real estate for something else, especially when I can open it on my desk and have it there.
- career flexibility
- delight - I really enjoy writing code and no language I'm conversant with now is really all that current in the user interface / client development realm
- curiosity - I was already an old man when java came out: I'd like to see what all the hubbub's about
- broad scope - I miss so many things when I attack problems without having the big picture. In this problem (getting up to speed in Java across the board, with all that may imply) I don't want to just buy a good intro book and go from there. I'd like to see the bigger picture earlier on because sometimes seeing the whole helps me avoid the 'missing things' pitfall.
- non-conversance - Although I worked on some really cool stuff 30-40 years ago (LANDSAT V ground station software; NSC Hyperchannel microcode; a multi-player star trek game - MTrek - in fortran on a VAX using VTxxx displays, to name a few) programming has changed a lot since then, and since I've not been on a programming team for nearly that long, I am sure my lack of conversance with the developer's realm means I am not even asking the right questions (which is why I am asking here). For example, we didn't have rigorous development methodologies or tools to help with conformance to them back then.

-- Yish
Mansukhdeep Thind
Ranch Hand

Joined: Jul 27, 2010
Posts: 1157

J Yishmeray wrote:
- non-conversance - Although I worked on some really cool stuff 30-40 years ago (LANDSAT V ground station software; NSC Hyperchannel microcode; a multi-player star trek game - MTrek - in fortran on a VAX using VTxxx displays, to name a few) programming has changed a lot since then, and since I've not been on a programming team for nearly that long, I am sure my lack of conversance with the developer's realm means I am not even asking the right questions (which is why I am asking here). For example, we didn't have rigorous development methodologies or tools to help with conformance to them back then.

-- Yish


30-40 years ago you worked on "really cool" stuff. My age itself is only 28. Anyways, nice to have another granddaddy on the ranch. Honor to have you here sir.
Jeanne Boyarsky
internet detective
Marshal

Joined: May 26, 2003
Posts: 29287
    
140

Ying,
I'm not saying Swing isn't used. I'm saying web apps are used much more frequently than Java desktop apps. That's true for JavaFX as well which targets the desktop space. This has been true for a long time. And given the recent bunch of security issues, I expect there to be even more hesitation in creating desktop Java apps. Java does have a good outlook on the server. (As do other JVM languages - like Groovy - which you may find easy to start out with as well.)

Which means you are better off spending your time learning Servlets than Swing/JavaFX.
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 60082
    
  65

In my opinion JavaFX is a DOA as Swing. Java for desktop applications just never took off. If boning up on Java is for the purpose of attractiveness to employers Swing, JavaFX, applets and other Java GUI technologies are generally a waste of time except for niche positions.

The web is where it's at. So to answer the question about "how is the UI created?", my answer is HTML, JavaScript and CSS -- that's where Jeanne's recommendation of servlets and JSP come in as the server-side power behind web apps.


[Asking smart questions] [Bear's FrontMan] [About Bear] [Books by Bear]
J Yishmeray
Greenhorn

Joined: Mar 23, 2013
Posts: 8
    
    2
Jeanne Boyarsky wrote: ** Yish **,
I'm not saying Swing isn't used. I'm saying web apps are used much more frequently than Java desktop apps. That's true for JavaFX as well which targets the desktop space. This has been true for a long time. And given the recent bunch of security issues, I expect there to be even more hesitation in creating desktop Java apps. Java does have a good outlook on the server. (As do other JVM languages - like Groovy - which you may find easy to start out with as well.)

Which means you are better off spending your time learning Servlets than Swing/JavaFX.


Bear Bibeault wrote:In my opinion JavaFX is a DOA as Swing. Java for desktop applications just never took off. If boning up on Java is for the purpose of attractiveness to employers Swing, JavaFX, applets and other Java GUI technologies are generally a waste of time except for niche positions.

The web is where it's at. So to answer the question about "how is the UI created?", my answer is HTML, JavaScript and CSS -- that's where Jeanne's recommendation of servlets and JSP come in as the server-side power behind web apps.



Jeanne - I did not understand you to be saying that Swing isn't used. No harm done there.

Both - Gotcha. Servlets/JSP/HTML/JavaScript/CSS - that answers how it's done and how it might be attractive practically speaking to employers.

Thanks to you both for that. I get it. That's very clear now.

It also doesn't hurt that I'm fairly conversant with these other technologies already. It helps immensely.

Much obliged to you,

-- Yish
Mansukhdeep Thind
Ranch Hand

Joined: Jul 27, 2010
Posts: 1157

Bear Bibeault wrote:In my opinion JavaFX is a DOA as Swing. Java for desktop applications just never took off. If boning up on Java is for the purpose of attractiveness to employers Swing, JavaFX, applets and other Java GUI technologies are generally a waste of time except for niche positions.


I have also observed the same. Why is this so? Is Java not capable enough as mark up languages and scripting languages in building rich clients?
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 60082
    
  65

My feeling is that, for the most part, desktop UIs built with Java were pretty poor and did not mesh well with the underlying operating system. I have a few system tools that are written in Java and they look and act completely differently from native OS X applications. Fail. Big fail in my opinion.

Applets just always plain sucked and didn't need a reason to be deep-sixed.
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 60082
    
  65

Mansukhdeep Thind wrote:Is Java not capable enough as mark up languages and scripting languages in building rich clients?

Most desktop applications are not built with scripting languages. Native OS X apps are built with Objective C, for example. When I was building Windows apps, C++ was all the rage.
Mansukhdeep Thind
Ranch Hand

Joined: Jul 27, 2010
Posts: 1157

Bear Bibeault wrote:
Mansukhdeep Thind wrote:Is Java not capable enough as mark up languages and scripting languages in building rich clients?

Most desktop applications are not built with scripting languages. Native OS X apps are built with Objective C, for example. When I was building Windows apps, C++ was all the rage.


What all Windows applications have you worked on? Have you worked for Microsoft?
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 60082
    
  65

Mansukhdeep Thind wrote:What all Windows applications have you worked on?

Lots. Likely the most prominent was the very first version of Dragon NaturallySpeaking.

Have you worked for Microsoft?

No. I would never work for such an evil organization.
Mansukhdeep Thind
Ranch Hand

Joined: Jul 27, 2010
Posts: 1157

Bear Bibeault wrote:
Mansukhdeep Thind wrote:
Have you worked for Microsoft?

No. I would never work for such an evil organization.


Why do you term it as an "evil organization"?
Jayesh A Lalwani
Bartender

Joined: Jan 17, 2008
Posts: 2066
    
  22

Yish,

If you are looking for another language to do some client side/front end development, look for something else besides Java. Java is more or less a backend development language. Most people build applications that have web front ends with java driving the server side.
J Yishmeray
Greenhorn

Joined: Mar 23, 2013
Posts: 8
    
    2
Much helpful input, and for that I am grateful.

My goal had been to sketch a sort of outline of two things
- the categories or subject areas in which I should be researching; and
- a couple of names of books that might fit into those categories

I've gotten a bit of help with categories, more or less leading to something very much like my original thoughts, with slight additions
- intro/getting to know you
- reasonably complete language reference
- database connectivity
- jsp/servlet
- container(s) e.g. Spring or EJB
- unit testing
- advanced topics such as, for example, performance, elegance, or whatever else might fit here
- (maybe) certification related, if different from the above


With the understanding, now beaten far more to death than I really had wanted to, but that's the nature of forums and I don't really mind, that graphics/ui stuff in the realm of swing/awt/javaFX is not all that relevant these days, certainly not for whatever people hire programmers to do in Java.

I remain open to other suggestions as to new entries in the topic/category list.

I've also gotten these recommendations:
- intro (Java SE 7 Programming Essentials)
- lang. ref. (Core Java; Java, the Complete Reference)
- lang. ref. realm more related to JSP/Servlets (Core Servlets)
- testing (Test Driven or Junit in Action)

Plus the suggestion that JavaDocs, the Java tutorial, and other online resources would be useful. To this I reply that I find them of some use, and they will have their place, though for many reasons they are inferior choices to physical books for me.

To summarize: I'd be happy for any refinements to my category list, and I would be happy for any suggestions or thoughts as to which book or books I should consider for inclusion in any of those. I realize I may have missed something in my attempts to redact/review/summarize all that folk have kindly posted in response to my thread; if so, please feel free to remind/amend as needed.

-- Yish
Mansukhdeep Thind
Ranch Hand

Joined: Jul 27, 2010
Posts: 1157

Do not forget to keep a book on a good Web/Application server like WAS/WebLogic or JBoss. You would need to understand these to deploy your applications on customer end. Important to know their basics. Of course, for development use Apache tomcat.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Starting right, taking the long view, building a library of physical Java books to help me get there
 
Similar Threads
where to go..?
mysql browser logic
Seven Languages in Seven Weeks
Java Book
Java 5 books