Thursday, July 26, 2012

Java EE 6



Initial Peek at Java EE 6 Cookbook for Securing, Tuning, and Extending Enterprise Applications

Packt Publishing recently invited me to review Mick Knutson's (@mickknutson) book Java EE 6 Cookbook for Securing, Tuning, and Extending Enterprise Applications. I intend to provide a comprehensive review in a later post after I've had a chance to read the book, but an idea of what the book covers can be found in its Table of Contents.


In roughly 320 pages, this book appears to cover a wide gamut of topics and tools. It appears to cover several Java EE specifications with focus on what's new to Java EE 6 (such as EJB 3.1JPA 2.0,Servlet 3.0, and JAX-RS 1.1). It also appears to cover numerous tools and non-Java languages. For example, it appears to cover use of GroovyScalaJythonJMXVisualVM, and several other (including commercial) tools and products.
I'm looking forward to reading Java EE 6 Cookbook for Securing, Tuning, and Extending Enterprise Applications and providing my thoughts and observations about the book in a future post.




Software Development Posts of Interest - March 2012

This post references some of the recent blog posts and articles that have interested me. Topics include Java-specific topics such as Java EE, JavaFX, Scala, and Gradle as well as more general software development topics such as software patents and open source.
Why Software Patents are EvilSimon Phipps summarizes in Why software patents are evil why patents in software may not make sense:
Patents may work in other industries, where the cost of innovation is so high that a temporary, state-sanctioned monopoly provides just enough time to gain a return on the investment. But that investment-return ratio has a completely different value for software. It turns out that software patents have little bearing on encouraging innovation. ... Software patents are ... bad news for most innovators in the software industry.
Phipps also looks at the relationship between software patents and open source software. He writes, "The problem is that open source software is defenseless against the anticompetitive abuse of patents."
Java EE 6 Versus Spring FrameworkIn the post Why is Java EE 6 better than Spring? Arun Gupta discusses why he believes developers should use Java EE 6 rather than the Spring Framework. Gupta begins the post by referencing several similar blog posts including Java EE wins over Spring and Why I will use Java EE (JEE, and not J2EE) instead of Spring in new Enterprise Java Projects in 2012.
Some of the feedback comments on this post are interesting because they demonstrate the differences of opinions between Java EE evangelists and Spring Framework evangelists (with comments from employees of both Oracle and SpringSource/VMWare among them). It is interesting to see the role reversal in this situation. Evangelists of the Spring Framework (even before it was so named) helped convince the Java enterprise development community of the problems with early J2EE, but now it seems the tables have turned and similar evangelism is advertising the "legacy" nature of Spring Framework as compared to modern Java EE.
Java EE 6 vs Spring - let's get ready to rumble provides another look at this post.
Oracle's Long-Term Intentions for JavaPaul Krill's Oracle lays out long-range Java intentions summarizes the "Oracle slide presentation entitled 'To Java SE 8 and Beyond!' posted on the QCon conference website." Based on Krill's summary, this presentation sounds very similar to the Oracle OpenWorld 2011 presentation From Java SE, 2012, to Java 12: Java SE Roadmap.
Reducing Memory Usage and Garbage Collections with -XX:+UseCompressedOopsStuart Leneghan's post Reducing Java Memory Usage and Garbage Collections with the UseCompressedOops VM Option looks at the author's observation of the -XX:+UseCompressedOopsHotSpot-specific JVM option "[reducing] the memory usage of the application by 14% and the number of garbage collections by 24%."
More on Java TuningSpeaking of Java performance and memory tuning, Rupesh Ramachandran's post Java Tuning in a Nutshell - Part 1 provides a "JVM tuning cheat sheet" and categorizes JVM options into four categories: garbage collection, heap tuning, logging, and other performance.
The IBM DeveloperWorks article From Java code to Java heap is fairly comprehensive, providing background details on JVM memory handling and a focus on the impact of different Java collections on memory. This article also references the HotSpot option -XX:+UseCompressedOops as well as the similar IBM JVM option -Xcompressedrefs.
Understanding Garbage Collection is another recently-posted resource. This post is "the first of a series of 'Become a Java GC Expert' articles" and its focus is on introducing garbage collection in Java. The same site also hosts the blog post How to Analyze Java Thread DumpsFigure Out Why Java is Eating CPU provides an interesting tip.
ScalaThere continues to be a profusion of Scala posts. Recent posts include How Scala Can Improve Your LifeIs Scala making the right steps forward?Scala creator Martin Odersky fends off critics of Scala's roadmapFree online books for learning Scala, and Scala: Sink or Swim? Part 1. I have also seen new references to Twitter's Effective Scala.
Unit TestingNeil Buesing's post How to Mock Final Classes in Unit Tests examines the problem that "both Mockitoand EasyMock cannot mock classes (or methods) that are final." The feedback comments are also informative and discuss other available solutions to this issue: PowerMock), Groovy-based gMock, andJMockit.
Improved Java Stack Trace PresentationTomasz Nurkiewicz has posted two blog posts on how to improve Java stack trace experience using theLogback ProjectFiltering irrelevant stack trace lines in logs demonstrates his "proof-of-concept" forfiltering out selected stack trace frames using Logback and references the StackOverflow threadCleaning noise out of Java stack traces. An older post, Logging exceptions root cause first, discusses a feature he contributed to Logback for displaying exceptions with root cause first rather than last.
A Peek at NetBeans 7.2Geertjan Wielenga's NetBeans Java Hints: Quick & Dirty Guide provides a peek at a capability coming in NetBeans 7.2 for creating NetBeans hints.
GradleLast milestone for Gradle as it prepares for first major version cites the Gradle roadmap and states that the current version of Gradle ("1.0-milestone-9, released on 13th March 2012") "will be the final one" before Gradle goes into release candidate.
GroovyFX and JavaFXGradle is not the only product in the Groovy ecosystem with recent version advancement news. Dean Iverson has announced the GroovyFX First Official Release. He also shows how to use Grape to "grab" GroovyFX similar to the approach shown in my post Easy Groovy Logger Injection and Log Guarding.
Other interesting recent posts related to JavaFX include Example CSS Stylying in JavaFXNew in JavaFX 2.1: ComboBox, and Packaging JavaFX Applications as Native Installers.
Groovy and DevOpsIn the post Groovy, A Reasonable JVM Language for DevOpsGeoffrey Papilion writes that Groovy provides the "JVM glue" he sought for "a simple JVM language that allows me to use any native object." After demonstrating use of Groovy for a "quick script to get data from JMX into ganglia fromSsolr," he concludes
So, if you're working in a Java with a bunch of Java apps, think about giving Groovy a chance for writing some of your monitoring tests, and metric collectors. It is a simpler language than Java to put together those little applications that can tell you how your system is performing, and well within the reach of your average DevOps engineer.
DNS for Software DevelopersDoug Rathbone's post DevOps DNS for Developers – Now There’s No Excuse Not To Know is intended to help software developers become more familiar with the basics of DNS. This does seem like the sort of article one would except to be associated with the DevOps movement.
The Big Three JVM LanguagesThe Big Three – Scala, Clojure and Groovy is a blog post with observations about GroovyScala, andClojure seeming to be the most popular JVM languages among Java developers based on two polls (Which alternate JVM language do you prefer? and Which JVM Language Is On Top?). Charles Oliver Nutter has added a feedback comment regarding JRuby being a more popular JVM language when you consider Ruby developers.
Java 7 WatchServiceThe post What’s New in Java 7: WatchService describes java.nio.file.WatchService and calls the related functionality "one of the more interesting ... new features in Java 7." This is a fairly concise post that quickly introduces the functionality and includes sample code.
Opinions on Rails, Hibernate, Google, JSON's License Agreement, and the Spanish Theory of ManagementI started this post with reference to an opinion-oriented post on open source and patents. It seems symmetrically pleasing to close this post with references to other opinion-oriented pieces. Tyler Menezes discusses technical and cultural reasons he won't use Ruby on Rails in the simply titled post I will not learn RailsJames Whittaker provides a articulate and insightful post Why I left Google.
Rob Gordon is "not impressed" with Hibernate 4.1 ease of use. The Dodgy Coder blog ("Never trust a programmer in a suit") includes a post on the "Spanish Theory" of project management.
Brian Fox points out that JSON's license agreement states "The Software shall be used for Good, not Evil." Fox further points out that "compliance is impossible" and that "this isn't even open source." He asserts that "this additional clause adds an unnecessary complication" and I tend to agree. The folks in suits are not comfortable with objective statements in the license agreements.
ConclusionI have summarized and linked to Java-specific and general software development posts of interest in this blog post. The software development industry continues to be ever-changing and full of news.



Book Review: Java EE 6 Development with NetBeans 7

recently posted an early preview of my thoughts on David R. Heffelfinger's book Java EE 6 Development with NetBeans 7. In this post, I provide a more detailed review of this book.

General Observations

In this section of my review, I make some general observations regarding the book.


Breadth of Coverage for Java EE 6 and NetBeans 7

Reviewing the Table of Contents for Java EE 6 Development with NetBeans 7 provides a quick overview of what the book covers. Its chapters cover topics such as using the NetBeans IDE, servletsand JavaServer Pages (JSP), JavaServer Faces (JSF), Java Persistence API (JPA), session beans,Contexts and Dependency Injection (CDI), Java Message Service (JMS), Java API for XML Web Services (JAX-WS), and Java API for RESTful Web Services (JAX-RS). In addition, the book features two appendices focused on debugging with NetBeans 7 and profiling with NetBeans 7.


Lots of Pictures!

Java EE 6 Development with NetBeans 7 features numerous screenshots that illustrate the points being made. The writing style is easy to read and the concepts are generally easy to follow.


Use of Keyboard Shortcuts

One of the "small" things that I really liked about this book was the consistent inclusion of NetBeans 7keyboard short cuts and commands that can be used to perform functionality available via mouse clicks. I've long benefited from being aware of powerful keyboard commands that make development and code maintenance quicker. I sometimes even copy code into vim just to use a few such commands before pasting the code into my blog posts or other presentation venues.


Best Practices and Common Practices

There are several times in Java EE 6 Development with NetBeans 7 that best practices and common practices are discussed in conjunction with the particular topic being discussed. This is a natural mix of coverage of a particular portion of Java EE 6 with practices that lead to better use of that feature.


References to Additional Resources

I like the author's liberal use of references to online resources with additional details. The book generally does a nice job of focusing on topics at an introductory level and providing some illustrative examples before referencing more detailed resources for lower level and additional details. The author has done a nice job of providing enough details in the book to get started and understand the overall concept without burdening the reader with too many details. The reader can reference the more detailed resources after gaining familiarity with the concept in general.


To Use web.xml or Not To Use It

One of the things I had heard about Java EE 6 was that web.xml is no longer required due to the heavier use of annotations. However, this book has pointed out at least three situations (web security, database access, JSF project stage) in which web.xml is either still required or may be desirable.


Specific Sections in Review

The Preface

The Preface of Java EE 6 Development with NetBeans 7 answers many of the questions that a person considering the book might ask. For example, it talks about what Java EE 6 adds to previous versions of Java EE (JSF 2.0Servlet 3.0, and JAX-RS for example). The Preface also states the prerequisites needed to run examples from the book: Java SE 6 or newer (I'm using JDK 7) and NetBeans 7.0 Java EE Edition (I'm using the "All" edition that includes Java EE).

Perhaps the most important part of the Preface is the section that states who Java EE 6 Development with NetBeans 7 is intended for. The three types of developers forming the book's primary audience are general Java developers wishing to learn how to use NetBeans 7 to write Java EE 6 applications, NetBeans 7 users wishing to learn how to use their IDE to developer Java EE 6 applications, and developers already familiar with Java EE 6 who wish to learn how to use NetBeans 7 in their work.


Chapter 1: Getting Started with NetBeans

The first chapter introduces the NetBeans IDE generally and describes several aspects associated withobtaining NetBeans. This section includes information on configuring an application server to be used with NetBeans 7 other than the bundled GlassFish or bundled Tomcat. It similarly covers using a relational database other than the Java DB bundled with NetBeans 7. The chapter also describes how to deploy a very simple Java EE application in NetBeans.

After the section on obtaining and configuring NetBeans and deploying a Java EE application to NetBeans, Chapter 1 moves onto coverage of NetBeans "tips for effective development." In this section, Heffelfinger covers topics that are useful to general Java development (not limited solely to Java EE benefit). These topics include code completioncode templateskeyboard shortcuts, andvisual cues. Although I have used NetBeans frequently and regularly for several years, I don't consider myself a "power user" and I picked up several good tips for being a more effective developer with NetBeans after reading this second part of the first chapter.


Chapter 2: Developing Web Applications with Servlets and JSPs

The second chapter of Java EE 6 Development with NetBeans 7 introduces development of JavaServer Pages (JSP) with NetBeans 7. This is the first example (of several) in the book where the Java EE topic is introduced at a general and beginning level rather than focusing solely on what's new to Java EE with Java EE 6. In other words, the treatment of JSP development with NetBeans is approached in a manner that allows even developers unfamiliar with JSPs to start using NetBeans to develop web pages based on JSP. Being fairly comfortable with JavaServer Pages, there wasn't a lot new here for me, but it was interesting to see how much presentation assistance NetBeans provides for generating JSPs.

The second chapter also covers development of Java servlets and use of JSP fragments. It again approaches these as if the reader has little or no background with these. The chapter also covers form-based authentication in some detail and talks about the general Java EE support for form-based authentication as well as GlassFish-specific support for form-based authentication.


Chapter 3: Enhancing JSP Functionality with JSTL and Custom Tags

Chapter 3 builds on the second chapter's introduction to JavaServer Pages. Heffelfinger first explains why custom JSP tags can lead to better JSP development and maintenance. The chapter then introduces NetBeans 7 support for core JSTL (JavaServer Pages Standard Tag Library) tags such asifchoose, and forEach.

Heffelfinger covers NetBeans 7 support for JSTL SQL tags. He demonstrates creating JSP code using NetBeans 7 JSTL support for all of the CRUD operations. I think it's generally a bad idea for multiple reasons to access a database directly from the JSP source code. Although coverage of the JSTL SQL tags is included in the book, the author also warns that the JSTL SQL tags "tend to create applications that are hard to maintain, since they mix database access with display logic." From his coverage of NetBeans support for using JSTL tags, Heffelfinger moves onto coverage of using NetBeans to generate the tag file for one's own custom JSP tags.


Chapter 4: Developing Web Applications using JavaServer Faces 2.0

The fourth chapter covers JavaServer Faces. This is one of the subjects covered in this book that I have the least familiarity with, so reading it gave me a chance to see coverage of a topic from a less experienced reader's point of view. I was pleased to learn that JSF, like other aspects of Java EE, has reduced much of its configuration requirements via annotations. It was also useful to read about when and why web.xml and faces-config.xml are required when developing JSF applications. Topics such as creating a basic input page with JSF, validating input with JSF, and providing a confirmation page with JSF are discussed in this chapter.

The chapter concludes by covering two major features new to JSF 2: using Facelets templating and JSF 2.0 custom components (composite components).

This chapter is available for download as a sample chapter from the book's main page.


Chapter 5: Elegant Web Applications with PrimeFaces

Although I have a little experience with JSF, I have never used PrimeFaces, so this chapter was entirely new to me. The PrimeFaces main web page describes it as a "lightweight open source component suite for Java Server Faces 2.0 featuring 100+ rich set of JSF components." The PrimeFaces Showcase(referenced in the chapter) shows off some of PrimeFaces's impressive visual features and components.

I had not realized that PrimeFaces is bundled with NetBeans 7, but Heffelfinger demonstrates how to configure NetBeans to use PrimeFaces and provide features such as code completion related to PrimeFaces. It is clear to me after reading this chapter that PrimeFaces does indeed make use of JSF much simpler and NetBeans 7 makes the use of JSF and PrimeFaces much easier. The combination of NetBeans 7 with JSF 2 and PrimeFaces seems to put ease of development much closer to that of Flex.


Chapter 6: Interacting with Databases through the Java Persistence API

I'm a big fan of the Java Persistence API and am happy to see it get a chapter's focus in Java EE 6 Development with NetBeans 7. The chapter introduces JPA and creation of a JPA entity to be used in a JDF application. The default EclipseLink implementation of JPA employed by the NetBeans-bundled GlassFish is used. Although the JPA example specifically uses the NetBeans-bundled JavaDBrelational database implementation, information is provided on what is necessary to connect to other data sources.

Heffelfinger provides all the information needed for someone who had never used JPA before to build his simple example in NetBeans 7 using the bundled application server, bundled database, and bundled JPA implementation. I also like that he discusses using NetBeans 7's feature to implementData Access Object design pattern via JPA Controller Classes. The generated classes provide basic CRUD support for the entities specified using the NetBeans 7 wizard.

The JPA chapter includes coverage of a new feature in JPA 2 and Java EE 6: bean validation. The chapter also covers how to use NetBeans 7 to generate entity beans and named queries from an existing database and then concludes with coverage of creation of a JSF application from an entity bean.


Chapter 7: Implementing the Business Tier with Session Beans

After introducing the concept of Enterprise Java Beans (EJBs) in general, this chapter delves immediately into creating session beans in any of three NetBeans 7 project types. The chapter demonstrates creation of a stateless session bean with NetBeans 7 and deploying it with a Java client library. The chapter also covers some defining features of EJBs such as transaction support and EJB timer service.

The chapter calls out many new features of Java EE 6: allowing EJBs to be deployed in WAR files, the introduction of singleton session beans (in addition to preexisting stateless and stateful session beans), removal of requirement for local interfaces, and aspect-oriented programming via interceptors. Heffelfinger concludes the chapter by describing how to "completely generate the data access layers of our application without having to write a single line of Java code."


Chapter 8. Contexts and Dependency Injection (CDI)

CDI support is one of the most significant new features of Java EE 6, so it is not surprising that anentire chapter of Java EE 6 Development with NetBeans 7 is devoted to this subject. Although CDI can be used to "integrate various kinds of components in a loosely coupled but typesafe way" (Java EE Tutorial), it is most typically used to "make it easy for developers to use enterprise beans along with JavaServer Faces technology in web applications" (Java EE Tutorial). Chapter 8 of Java EE 6 Development with NetBeans 7 covers use of CDI and explains the "additional functionality that the CDI API provides over standard JSF."


Chapter 9: Messaging with JMS and Message Driven Beans

Chapter 9 covers the Java Message Service and describes JMS as "a standard Java EE messaging API that allows loosely coupled, asynchronous communication between Java EE components." I have found JMS 1.1 relatively easy to use, but its verbose boilerplate code is tedious to write (hence the popularity of Spring Framework's JMS Messaging).

Heffelfinger demonstrates how to use NetBeans 7 to generate much of this verbose boilerplate code normally associated with JMS. Although he talks about both queues and topics, his example focuses on creating a queue and on creating an associated connection factory. He demonstrates using NetBeans 7 to deploy newly created destination and connection factory and to create a JMS client against the deployed destination. Finally, creation of a message-driven bean (MDB) to process sent messages is demonstrated with NetBeans 7.


Chapter 10: SOAP Web Services with JAX-WS

Chapter 10 covers the general principle of a web service (whether SOAP-based or REST-based) before focusing exclusively on SOAP-based web services (REST is covered in the next chapter). I cannot think of a better candidate for the need of good tools to help with development than the SOAP-based web service. A common theme in Java EE 6 Development with NetBeans 7 is that of using NetBeans 7 to reduce the boilerplate code a developer needs to write. There are many areas of Java EE 6 where this is true, but it is no more true than in the area of SOAP-based web services and JAX-WS.

Heffelfinger opens up his discussion on NetBeans 7 support for SOAP-based web services by introducing WSDL and by discussing how NetBeans 7 allows for either top-down (contact first with Java generated from existing WSDL) or bottom-up (WSDL generated from existing Java classes) development of SOAP-based web services. He provides an example of generating a simple length conversion web service using NetBeans 7's wizard, changing the body of the generated methods on the properly annotated Java POJO, and automatically generating WSDL and a client to test the simple web service.

The second example and third example use JAX-WS to expose a stateless session EJB as a web service. One of these examples demonstrates this by creating the EJB in conjunction with creation of a web service and the other of these examples demonstrates this by creating a web service on an existing EJB.

There are many who argue that contract-based, top-down web service design is the preferred approach. This is demonstrated in this chapter via an example that shows generation of Java classes with stub methods based on a provided existing WSDL.


Chapter 11: RESTful Web Services with JAX-RS

One of the most exciting additions to Java EE 6 is that of JAX-RS to support RESTful web services. I have blogged on REST and on JAX-RS before and really like much about both. It is nice to see achapter of Java EE 6 Development with NetBeans 7 devoted to JAX-RS and REST in Java EE 6 with NetBeans.

Heffelfinger begins his coverage of Java EE 6/JAX-RS support in NetBeans 7 with a discussion on and demonstration of generating a REST-based web service from an existing database. The discussion includes details of what NetBeans does to make this happen, including the use of JPA facsdes and the typical use of Jersey.

As was done for coverage of NetBeans 7 with JAX-WS, this chapter demonstrates how to use NetBeans 7 to test a newly created REST-based web service and how to use NetBeans 7 to generate a client of the REST-based web service. I thought it was interesting, albeit not surprising, that the client API used for the generated client is Jersey's Client API. This makes it easy for NetBeans 7 to create methods for handling both XML and JSON.


Appendix A: Debugging Enterprise Applications with the NetBeans Debugger

I'm not normally the type of reader to "skip to the end," but I must admit that I read the Appendices first in this case. The reason for this is that I was curious regarding what the author had to say regarding debugging and profiling in NetBeans 7. For the most part, the coverage of both debugging and profiling in NetBeans 7 is largely applicable to any Java development, enterprise or standard.

Appendix A covers debugging with NetBeans 7 and does provide some information specific to debugging Java EE applications. The chapter describes using NetBeans 7 with the embedded GlassFish instance to essentially boil initial enterprise debugging steps down to a single step. Another piece of the NetBeans 7 debugging coverage that is specific to Java EE is the example itself. The example is intentionally broken so that debugging effort is needed and the example is based on Java EE technologies JSF, CDI, and JPA.

Fortunately for developers familiar with using NetBeans for debugging standard Java applications, the process for debugging enterprise Java applications is very similar. For example, the steps of setting breakpoints, stepping over, stepping into, and using the Local Variables window are the same as for standard applications.


Appendix B: Identifying Performance Issues with the NetBeans Profiler

The final portion of Java EE 6 Development with NetBeans 7 is an appendix focused on profiling with NetBeans 7. Appendix B is a relatively short appendix, but it does give an overview of the types of information that NetBeans 7 provides that can be used to identify performance issues. There is some discussion of how memory leaks can occur in Java, a principle worth understanding whether working on standard or enterprise Java applications.


The Drawbacks

Nothing is perfect and no book is perfect. Although there are some issues with Java EE 6 Development with NetBeans 7, they tend to be very minor and are not overly distracting. There is the occasional expected erratum and I thought a few of the sentences were a little too choppy, but the message was always relayed. Overall, the text was highly readable and was conducive to relaying the message rather than distracting from it.

It would be easy to say that the most significant drawback of the book is that it doesn't cover every single NetBeans feature or every single nuance of Java EE. However, I'd argue that details of that level are best left to books that are exclusively focused on particular aspects. For example, I'd expect to use a book centered on JavaServer Faces to learn the gritty details of using JSF. The focus of Java EE 6 Development with NetBeans 7 is clearly on introducing development of Java EE 6 applications using NetBeans 7 as its title implies. The book is written so that developers are only expected to have basic Java SE familiarity, but can be new to both Java EE and NetBeans. I like the author's style of introducing the most important concepts at a high level, showing them in demonstrations, and then referring to other resources for details that would have perhaps gotten in the way if covered in the introductory text.

This book is perfect for the developer who wishes to get a thorough introduction to Java EE and NetBeans 7, but it is not (and I doubt it was intended to be) a comprehensive Java EE reference. Similarly, it is also not a comprehensive NetBeans 7 reference. However, it does cover a wide swath of the most important features of both individually and as used together.


Other Characteristics

Although Java EE 6 Development with NetBeans 7 is almost 400 pages in length, it reads much more quickly than similar technical books of similar size because of the numerous screenshots. There are significant code samples included as well, which may lead to a reader spending more or less time than he or she would on text.

According to the book's web pageJava EE 6 Development with NetBeans 7 was released in June 2011 and has an ISBN of 1849512701. It is written in English and is available in printed format or in multiple electronic formats (PDF or ePub download or via PacktLib). I reviewed the downloaded PDF version.


Conclusion

I enjoyed reading and reviewing Java EE 6 Development with NetBeans 7. Because I have done most of my Java EE development with a different IDE and have used NetBeans mostly for Java SE/Spring/Groovy development, it was an eye-opener to see how useful NetBeans 7 can be for Java EE development. I also learned quite a bit about areas of Java EE that I am less familiar with (CDI, JSF, PrimeFaces) and even learned some smaller but still useful tips regarding areas of Java EE I am more familiar with.

Java EE 6 Development with NetBeans 7 provides introductory coverage to Java EE 6. It does not focus solely on topics new to Java EE 6, but instead covers Java EE as a whole from an introductory level and happens to include some Java EE 6 new features in that coverage. There are some entire new chapters on entirely new Java EE 6 features such as CDI and JAX-RS support, but most of the chapters include relevant Java EE topics that were the same clear back in the days of J2EE.

Java EE 6 Development with NetBeans 7 demonstrates via discussion and numerous screenshots how to employ NetBeans 7 and its many wizards to generate significant code and configuration for a Java EE 6 project. Best and common practices related to Java EE 6 development are sprinkled throughout this introductory discussion and references to online resources with greater detail are provided.

Java EE 6 Development with NetBeans 7 is particularly beneficial for developers with little or no Java EE experience who want to use NetBeans 7 to generate Java EE 6 applications. In a single book, such developers can find solid introductory coverage of both Java EE 6 topics and how to use NetBeans 7 to most easily employ those features. Even developers new to Java EE who are not necessarily planning on using NetBeans may find this useful as they could use NetBeans 7 to generate boilerplate code and configuration files that they could use to learn what they needed to write or maintain in their own preferred IDE.


No comments:

Post a Comment