Tuesday, December 31, 2013

Book Review for "Java EE 7 First Look"

Book Review for Java EE 7 First Look

Java EE 7 First Look
This is a nice read for the Enterprise Java developer.  It covers the changes that have been introduced with JEE 7, but it does it in such a way that the reader does not need to be an expert in JEE already.  That's a good thing, because JEE encompasses a lot.

Enterprise Java is a very broad topic.  From Web Services to JMS, from Servlets to Batch, from EJBs to CDI.  To even experienced Java developers, a lot of this can be acronym soup.  I would imagine most developers use a few parts of JEE frequently, and the rest infrequently.  This book is nice in that it gives simple examples for a lot of JEE, so if you're in an unfamiliar territory you can learn the very basics easily.  If you already have the basics, the book's main mission is to tell you what's new.  The author goes to the JSR specs for these, which is the right place to determine what's new.

The book explains what has changed across the JEE container for JEE 7.  (I won't go into great detail here, because there will be a link at the end of this review that will take you to the book's table of contents.  The TOC will tell you more than I would care to copy.  I'll use my words to try to explain what's of value in the book.)  The author first explains a little about the overall use of that part of JEE (i.e. why you might use a servlet, or an EJB, etc.)  The author usually then gives a simple overview of the 'old' (i.e. most simple) way to leverage that part of JEE.  Next he'll show you the new-fangled changes that came with JEE 7, which can step up your knowledge of the topic.  It's all written in an easy tone, a very easy read.

Ok, for those too lazy to read the TOC here's a quick view of part of what you get:  Servlets, JSF, EL, JPA, EJB, JMS, Jax-RS, CDI, Validators and Interceptors, and Security (JASPIC)

The author (who does a great job throughout most of the book) chose to use GlassFish as an example JEE container.  That's a fair choice, but I would have preferred WildFly.  (Disclaimer:  I work for Red Hat.)  Still, the book does a good job of explaining Application Server configuration where it's needed.

Summarizing, who is this book good for?  I'd call this book a good refresher for anyone who uses JEE to develop their Enterprise applications.  It will get you a quick start for unfamiliar parts of the AS stack, and will show you what's new for all of JEE.

The book can be found here.

Happy Reading!

Saturday, December 21, 2013

Book Review for "RESTful Java with JAX-RS 2.0, Second Edition"

This book covers Jax-RS in great detail.  It's a big book, nearly 400 pages and all of it densely populated with information.  The author (who is the lead for JBoss's Jax-RS implementation) has comprehensive knowledge of the topic, and puts this knowledge into easily transferable form.  All things considered, this is an excellent book.

The book is divided into two parts, which I think of as "theory" and "practice".

The first half of the book starts with an introduction to REST and HTTP, then gives an overview of how RESTful architecture can be applied to a typical application.   These chapters are followed by explanations of the Jax-RS spec and how the various components are used.

There's a great deal of information here, some of the topics covered include basic service construction, extraction of information from an HTTP request, Jax-RS Injection, Exception Handling, client API, filters and interceptors, and more.  There are some especially handy chapters on security, deployment and integration.  These tell you how your RESTful applications should be packaged, deployed and protected in their runtime environment.

The second half of the book is a 'workbook' that includes examples that correlate to the chapters in the first half of the book.  These are well explained (including basics of Maven) and discuss both server and client components as needed.

Together, these components provide a detailed explanation of Jax-RS and it's entire ecosystem.  The book will serve equally well as an introduction and as a reference.  (Did I mention it's comprehensive?) 

Final words:  If you have an interest in Jax-RS, this book should be on your must-have list.  It explains the hows and whys and will take you from your first RESTful service through nearly any real-world use case.

Disclaimer:  I work for the same company as this book's author, Bill Burke.  I have no reservations about giving this book a 'good' review, as I am confident any objective reader will likely agree.

The book can be found here.

Happy RESTing!

Wednesday, December 18, 2013

Learn to be a game programmer-- for FREE, in 8 weeks. From home.

This blog entry is really a shout out to the nice folks at Coursera and Rice University who have provided the MOOC (massive open online course) titled "An Introduction to Interactive Programming in Python".  I recently took this free course, and it was FANTASTIC.

This was my first MOOC, so I wasn't quite sure what to expect.  First, I went through the sign-up process through Coursera.  I don't remember much about that, except I'm pretty sure about three things:
- It must not have been very hard.
- It was free, I was not about to pay for something without trying it.
- It required an email address.

I had already browsed Coursera's catalogue, and decided to try the Python course based on the class description.  It promised we'd do some game development, which interested me.

I've been a programmer for quite some time and was somewhat familiar with Python.  I use it once in a while for general-purpose file munging duties.  But I have never been a game programmer, and that's what got me interested in this course.

The course turned out to be an 8 week cycle, where each week was composed of:
- About 4 or 5 10 minute video lectures.  The professors were very clear and had good teaching skills.
- A mid-week quiz that covered some of the concepts discussed this week.
- A 'mini project' where the instructors would provide a template for a Python program that gave you a head start.  You also got explicit suggestions on how to implement the game we were working on that week.

Programs are graded by peers.  Each week you would assess 5 fellow student's programs, and then have a look at your own.

By the way, if you want your efforts to be recognized for college credit, you can pay a fee for this within the first couple of weeks of class.  I wasn't interested in that, I just wanted the gaming knowledge.  So I paid nothing, but got all the knowledge for free!

To minimize environmental issues, the course instructors have provided a browser-based IDE called 'CodeSkulptor'.  A truly brilliant idea, this UI works very well.

That's it!  So for 8 weeks we wrote games like 'Pong', 'Memory', 'High/Low', 'BlackJack' and finally 'Asteroids'.  We started out slowly, and then added all the stuff I knew I had to grasp but never did before-- Sprites, collisions, making stuff move around the screen, bouncing things off walls, etc. 

I would never have guessed in a million years that someone could teach the fundamentals of this stuff through 10 minute video lectures.  But they did, and today I am happily working on games of my own invention using these necessary techniques.

If you haven't picked up on this yet, I found this class absolutely fantastic.  I intend to take another class soon, and hope the catalogue of programming classes keeps expanding.

By the way, MOOCs are offered from some very prestigious schools.  This is top-notch stuff.

So please give MOOCs a try.  If you're like me and have an interest in game programming, catch the next iteration of the Python Interactive Programming class.  I hope you find it as fun as I did.

Happy learning!

Getting up to speed with JEE 7

 Java EE 7 First Look

Like many Enterprise Java programmers, a big part of my job is simply staying current with the JEE spec.  The application server is constantly evolving, adding new features, and getting easier to use-- provided you stay current with the programming model.  Failing to stay current means you'll one day look at some JEE artifacts and wonder what exactly it is that you are looking at.

It's about time for me to have a look at the latest JEE spec (JEE 7) so I can be prepared for what's ahead.  (Wildfly 8, the successor to the old JBoss Application Server, is already there so I have a nice server I can learn with.) 

The vehicle for my continuing education is a new title from Packt Publishing titled "Java EE 7 First Look".  The book seems promising, it's around 150 pages and appears at first blush to have a reasonable number of clean code samples and legible diagrams.  (I *love* diagrams.)  I'll start reading soon and will report my findings here.

If you're too anxious for the review, you can have a look already here.

Happy pre-Holiday slowdown!