Tuesday, October 14, 2014

Java Book Bootcamp - A guide for new developers


This isn't an exhaustive list but if you're overwhelmed and don't know where to get started with being the next Java rockstar .. then read these books and feel confident that you're getting broad exposure to the basics plus more. 


I like books ... so here's what I'm reading. I'm going to start with how I plan to create an entry point in understanding Java EE, Spring, and just overall hope to become a better programmer.

1. Grails in Action - Glenn Smith, Peter Ledbrook


This has to be the best Grails book on the market today. It very carefully takes you through building a real application while explaining the concepts thoughtfully and all the examples work..yay programming books that have working tutorials! I plan on spending the most of my time with Grails .. but going to have to know a bit more before I can truly get the most out of it. 



2. Programming Groovy 2: Dynamic Productivity for the Java Developer - Venkat Subramaniam


Man, I love this guy. His humor and gentle approach brings a very insightful view to anything he's talking about. I love watching his developer sessions and presentations. This is a great book on Groovy. It goes in depth and in great detail while still retains an entry level attitude so that newcomers (like you) or veterans alike can get up and running with Groovy ... which I would recommend you do before trying to tackle your latest Grails application.


3. Spring MVC Beginner's Guide - Amuthan G.



Moving from the top of the stack with Grails downward I will start with the foundations of Spring MVC - the de facto web framework upon which Grails also gets its good looks from. Remember, the Spring Framework is huge and Spring MVC is only one piece to the puzzle but is critical in understanding to get the most out of Grails and other technologies that derive from it. This book goes through a brilliant, beginner friendly, introduction into the Spring MVC framework and walks you through all of the major concepts like controllers, data, view resolvers, services, internationalization, tag libraries, and REST - truly equipping you with the fundamentals of modern Spring web development. This book implements these concepts while walking you through a sample application. Each example builds upon the next and again - the tutorials work flawlessly! The book recommends use with Tomcat, Spring Tool Suite, and Maven. 

**Remember all of these books assume you are at least familiar with Java and basic to intermediate Object Oriented Programming principles such as design by interface, dependency injection (Spring books will go more in detail), polymorphism, inheritance, classes, enums, and the whole nine yards. None of these books are intended to teach the Java programming language. They are intended to teach you how to build web applications with Java and frameworks built upon the Java platform***

And now you see I started at the top with Grails, which is at its highest level an implementation of modern web design, model view controller architecture, and Spring based Java/Groovy programming. However the Spring framework and Grails are just one stack of technologies which derive themselves from the most basic and low level set of API's which make all these fun technologies possible - Java Enterprise Edition

Now it's time to learn where babies come from!


***Only start at the top immediately if you're anxious to get started with the latest and greatest from the Spring stack .. otherwise aquanit yourself with the basics of Java web development first using the core JEE7 API'S .. which is what I would recommend. Then you'll see what makes Spring and Grails such a great addition to the ecosystem***





4. Java EE 7 Essentials - Arun Gupta



Arun Gupta is a HUGE name in the world of Java. He started working at Sun Microsystems back in the late 90's as an original member of the Java Enterprise specification. I urge you to watch his talks. He speaks at Java One, Devoxx, User group videos on YouTube plus more! Now there will be a few Java EE books listed and this is for good reason. Lets say you don't want to become a true Java EE guru but you want to understand whats going on under the hood whenever you work with other frameworks like Spring and you hear things like Dispatcher Servlet, Transactions, and Bean Validation. This book is not a working tutorial but is a great code driven overview of the newest features added to the Java EE platform. This book starts from the beginning and goes into great detail about the core Java EE stack covering topics like Servlets, Java Server Pages, Java Server Faces, Enterprise Java Beans, Hibernate and the Java Persistence API (JPA), and not to mention RESTful web services using JAX-RS and he even shows off some of the latest and greatest in the industry with Web Sockets, JSON processing, and Batch applications. Definitely read this if you want to get caught up to speed. Consider it like your cars owner manual ... just not as boring. 


5. Professional Java for Web Applications: Featuring WebSockets, Spring Framework, JPA Hibernate, and Spring Security - Nicholas S. Williams


This book is a nice middle point between some of the basic Java EE concepts, general web development concepts, and an introduction to Spring. This book starts at the beginning and goes over the basics of the Java EE platform with Servlets, JSP's, Hibernate, JAX-WS/RS web services, Web Sockets and then moves its way into introducing the Spring Framework with developing MVC applications, Spring Data, Spring Security, and talks about Java build tools and IDE's. So definitely if you want a broad hands on, code driven tutorial approach - then this book is definitely a good one to get started with. However there is one caveat to mention. The author uses IntelliJ IDEA throughout the book for all of the code examples and projects and makes it clear that purchasing the Enterprise version is recommended for making most of the book and its features. Many of the concepts would still work fine in Eclipse or NetBeans, but just know that to directly import the source code and have the most accurate reference, you must have IntelliJ IDEA. 





Since I put out the last post about my view on JVM technologies in the world its time for a little update as to how I'm getting caught up. I had been playing with Grails and trying to understand it but there is a reason that wasn't working as well as I wanted it to. 

Right now looks like a revolutionary time for the Java platform. I stated in my older post that this reputation coming from the other side about heavy EJB's, XML hell, and outdated language features was something of the past. The largest companies in the world are able to build responsive, modern, powerful, and highly scalable application solutions with the Java platform and its surrounding technologies. You can start from the highest level and look at the Grails framework or Play! 2 framework. One written in Groovy, the other Scala. These frameworks give the Java community a way to get applications working within minutes and focus on productivity and innovation rather than infrastructure and configuration. Of course Ruby on Rails changed the game .. but so did Java. Long before Ruby on Rails came along. Now we just have the pleasure of being able to combine fluid productivity with the stability and power of the JVM. This is all fine and dandy ... for most everyone reading this. But for some .. say like me. It's actually not that good. I'll explain why. 

Well when reading Grails in Action or watching an online tutorial it doesn't take long to know that many of Grails components are based on the Spring Framework and Classic Java EE API's. Well there's your first problem. What's the Spring framework .. and what's Java EE? I thought Grails was Grails, why can't I stick to that? If you're a new developer you may see all these cool features of these highly productive frameworks and want to dive in full blown ... but the problem is these technologies are high level abstractions and improved implementations for technologies that have already existed for quite sometime. Hibernate, Spring Security, JAX-RS, <-- You see, I don't think that its effective to dive into the "new Java world" without having a clue to what the true foundations are. Actually, if you want to talk about Java EE, I have been trying to put these pieces together and understand everything and I came across a wonderful tool that I am absolutely saved to have found --- JBoss Forge. Forge is a rapid application development tool that can get even the largest projects up and running within seconds. I thought well hey this is fun! ... Yet I don't know the implementation details and the true features of everything its doing for me behind the scenes .. I don't..really know Java like I should. You can ignore this yes .. but why live on the blindside? Are you looking for a job? There's going to come a time when you really need to know whats going on under the hood. I do think I'm right on this. I have been using Forge as a great learning tool to help me in understanding the core Java EE technologies and API's ... with that I move to a deeper and more understanding view of the Spring framework. Spring Batch, Spring Data, Spring MVC, Spring Boot, Spring JDBC, Hibernate, EJB's, Dependency Injection, Servlets, JSP, JAX-RS, JAX-WS .. yeah you see those are a lot of terms. Notice how none of them are "Grails". And now maybe you're catching on to the reason why that is. 

It is critical for a new developer to not just jump in but to stick your big toe in the water and creep in slowly. I have taken it upon myself to know whats going on. I wasn't back in the day building J2EE apps in the early 2000's .. we just got here. The game is different. You're in a different position. Rather we like it or not...we need to play catchup. This goes for any platform or framework. When I was a .NET Power Ranger I had spent 5 months with ASP.NET and didn't know what a data grid or view state was. I created a Web Forms project and was like .. what the hell is this? ... "That's ASP.NET" .. huh?

Really this is also about not knowing as much as you think you should and becoming overwhelmed or discouraged. We don't have it like the old timers before us. We are growing up in light of new technologies .. not assembly language, C, and Java 1.0 ... no we are in the era of big data, NoSQL, 100,000 Javascript frameworks, REST REST REST REST REST REACTIVE REACTIVE REACTIVE REACTIVE .. there are terms and technologies surrounding you and you need to admit that we need to take a trip back to see where the true innovation lies. Why does Spring Boot matter? Well..you never worked on an enterprise project with Spring 1.0.0 .. so how could you appreciate Spring Boot or Grails as much as someone who is much older than you? This is at least how I see it. We're coming into this thing seeing these technologies and these programming models thinking this is how it has always been. I'm going to learn and understand why I like Grails and why I like Forge ... by trying to at least familiarize myself on the same level as everyone else who may have more experience. Know your stuff. 

No comments:

Post a Comment