Daily del.icio.us for January 22nd through January 23rd

  • AWS Elastic Beanstalk: A Quick and Simple Way into the Cloud – The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood; who strives valiantly; who errs, who comes short again and again, because there is no effort without error and shortcoming
  • It is not the critic who counts … – The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood; who strives valiantly; who errs, who comes short again and again, because there is no effort without error and shortcoming
  • Git Immersion – Brought to you by EdgeCase – Git Immersion is a guided tour that walks through the fundamentals of Git, inspired by the premise that to know a thing is to do it.
  • Unofficial JAXB Guide – Mapping interfaces — Project Kenai – Because of the difference between the XML type system induced by W3C XML Schema and the Java type system, JAXB cannot bind interfaces out of the box, but there are a few things you can do.
  • SQLContainer 1.0 Released – Blog – vaadin.com – The SQLContainer is an add-on for Vaadin, that implements the Container interface for standard SQL database servers. SQLContainer allows you to easily bind data stored from an SQL database to Table and Select components, as well as edit the data using Form
  • Mysema Blog: Querying in SQL with Querydsl – Querydsl provides a typesafe querying layer on top of JPA, JDO, JDBC and other backends. This blog post presents a simple tutorial on how to get started with querying in SQL using Querydsl.
  • Seven Things: Home – Lift gives you the above Seven Things, plus your code is concise and maintainable, Lift's performance and scalability, and all the benefits of deploying your application on battle-tested J/EE infrastructure.
  • dzone.com – Guess what programming language grew most in popularity in 2010? – TIOBE Software published its annual TIOBE Programming Community Index. The ranks are led by the usual suspects Java, C, C++, and PHP. But the language that grew most in popularity in 2010 was a bit of a surprise:
    Python
  • CodeMirror – In-browser code editing made bearable – CodeMirror is a JavaScript library that can be used to create a relatively pleasant editor interface for code-like content ? computer programs, HTML markup, and similar
  • SchemaSpy – Graphical Database Schema Metadata Browser – SchemaSpy is a Java-based tool (requires Java 5 or higher) that analyzes the metadata of a schema in a database and generates a visual representation of it in a browser-displayable format.
  • Active-Active Configuration: Spring Note: SqlUpdate – The org.springframework.jdbc.object.SqlUpdate class is another tool that I use a lot. This class encapsulates INSERT, UPDATE, and DELETE queries as beans defined within your application context.

Daily del.icio.us for Aug 27, 2007 through Sep 01, 2007

  • Programming Resources, News and Ideas: Red Hat Developer Studio – Introduction – The beta version of Red hat Developer Studio has been released recently. RHDS is a based on eclipse with set of pre-configured tools from JBoss IDE and Exadel Studio. RHDS gives us out of box and 100% open source platform for enterprise-level….
  • Ajaxian Featured Tutorial: Building a Flex DataGrid – This week, we?ve got a nice one for all of you Adobe Flex aficionados. The boys over at Paranoid Ferret Productions have a good introduction on how to build one of the most useful of components, a DataGrid, Flex-style.
  • Eulerian Technologies – DatePicker using Prototype and Scriptaculous – DatePicker using Prototype and Scriptaculous. You’ll find here the code and instructions for a datepicker widget using Prototype and Scriptaculous librairies.
  • Apache News Online: 24 August 2007 – Apache FOP 0.94 Released – The Apache XML Graphics team is pleased to announce the release of Apache FOP version 0.94. FOP (Formatting Objects Processor) is a print formatter driven by XSL Formatting Objects [1] and an output independent formatter.
  • Apache News Online: 29 August 2007 – Apache OpenJPA 1.0.0 Released – The Apache OpenJPA community is pleased to announce the release of Apache OpenJPA version 1.0.0. Apache OpenJPA is a feature-rich implementation of the persistence part of Enterprise Java Beans 3.0, also known as the Java Persistence API (JPA)
  • 10 Candidates for Extreme Makeover, Ticker-Edition « GigaOM – Sun Microsystems is changing its ticker symbol from SUNW to JAVA in order to better reflect the company?s role in new network infrastructure. Here?s 10 companies that we think could use an extreme ticker makeover.
  • Google Web Toolkit Blog: GWT 1.4 release and out of beta – It’s a really big day for Google Web Toolkit: GWT 1.4 is now available — and, with more than a million downloads under our belt, GWT is no longer in beta!
  • InfoQ: Availability & Consistency – When we move to distributed architectures for scalability, fault-tolerance reasons we are also introducing additional complexities. Amazon CTO Werner Vogels dives into the different parameters that play in the tension between availability and consistency
  • InfoQ: Patrick Linskey discusses OpenJPA and the JPA specification – At The Spring Experience conference, InfoQ caught up with Patrick Linskey of BEA to discuss the current status of the Apache OpenJPA project. Linskey explains where OpenJPA came from, how it fits into the OR Mapping space, the features it provides
  • Ajax programming with Struts 2 – Java World – In this article, Oleg Mikheev shows you how to use Struts 2, Dojo and JSON to display data in an Ajax-style table. In the process, he introduces some Ajax-friendly features of Struts 2, including its integration with WebWork, Guice & the Dojo toolkit.
  • JLINQ: IBM’s new paradigm for writing Java database applications – The project code named Java Language Integrated Query (JLINQ) gives database application developers an easy, GUI-based means to significantly increase productivity in both the design and implementation phases
  • start – MUScoop Wiki – The primary purpose of this Wiki is to archive Marquette sports information and history. In time, this wiki will become the one-stop-shopping repository for records, player statistics and biographies and team results for all MU sports teams.

Daily del.icio.us for Apr 06, 2007

  • Introduction to Spring 2 and JPA – This tutorial aims to guide you through the use and application of the Spring 2 framework in the shortest possible time using a pure and simple learn-by-coding approach. You will build a Web application from scratch, step-by-step, assisted by the Spring 2
  • An In-Depth Look at OpenJPA – Open JPA is a fully compliant, enterprise grade open-source JPA implementation suitable for production use. In this session, you will see how OpenJPA goes beyond the specification to include important features including caching, dynamic fetch group config
  • Security for GWT Applications – Google Web Toolkit | Google Groups – This article is a primer on JavaScript attacks, intended for GWT developers. The first portion describes the major classes of attacks against JavaScript in general terms that are applicable to any AJAX framework.
  • Ryan Stewart – Rich Internet Application Mountaineer » Building a Word Processor – Ajax vs. Flash – The Virtual Ubiquity blog has become one of my favorites. They?re doing a great job talking about the development process and it?s one of the best looks at the creation of a Rich Internet Application that I?ve seen.
  • Apache MINA (Multipurpose Infrastructure for Network Applications) – Apache MINA (Multipurpose Infrastructure for Network Applications) is a network application framework which helps users develop high performance and high scalability network applications easily
  • Freebase : Open, shared database of knowledge – Free + Database = Freebase. It’s about film, sports, politics, music, science and everything else all connected together. The goal is to build a massive, collaboratively-edited database of cross-linked data
  • Python as a First Language – What is important in the first courses in introductory computer science is giving them the best possible foundation of core principles and techniques that will allow them to adopt and adapt to the various languages they will confront in the real world.’

Daily del.icio.us for Jan 17, 2007

Book Review: Expert One-on-One J2EE Development without EJB

Book CoverExpert One-on-One J2EE Development without EJB by Rod Johnson, Juergen Hoeller
Paperback: 576 pages
Publisher: Wrox (June 21, 2004)
ISBN: 0764558315

I’ve read this book several times since the day it shipped and I have to say that this is an excellent book for anyone working as a developer or architect working in the Enterprise Java arena. I absolutely love this book given my bias – I guess I should start by stating my bias. EJB bashing is a favorite past time of a lot of people. I happen to love EJB’s, with the exception of entity beans and think EJB’s are a great way to create software solutions are remotable, loosely coupled and powerful. I will agree that EJB’s are way too complicated with all the stupid artifacts that you need to create to create and deploy an EJB. Having worked with EJB’s since 1999, I guess I am so used to all of nuances of EJB’s, I can write up deployment descriptors in my sleep. Having said that, I approached this book with a little apprehension as I hate these EJB-sucks book that don’t really offer any intelligent discussion about the shortcomings of EJB nor do they offer a viable alternative. Another assumption I brought to the book was that this was just a Spring book with a little EJB bashing thrown in for good measure.

To my pleasant surprise, Rod Johnson and Juergen Hoeller have written an awesome book. This book does not take cheap shots – Instead there is a intelligent, thought provoking discussion about the pros and cons of EJB. In fact, the first 120 pages (Chapter 1-5) are just a great breakdown of application architecture with a through treatment of EJB. I loved this section and re-read it several times and I found myself agreeing with pretty much everything in this section. I would equate this to a great meaningful discussion you would have with someone who really understood application architecture and development and you could debate the pros and cons of the many alternative approaches that exist today.

Chapter 6 starts the discussion of Lightweight Containers and the idea of Inversion of Control (IoC). This is not a chapter on Spring; rather it is an overview of Inversion of Control and strategies like Dependency Injection in the context of Spring and PicoContainer.

The next chapter offers a quick introduction to the Spring Framework. As everyone already knows, the Spring Framework is a very popular open source application framework created by Rod Johnson. The co-author Juergen Hoeller is another lead developer of Spring. The chapter is Spring is fairly light and people hoping for a in-depth Spring tutorial will be disappointed. Instead this chapter offers a rather high-level overview that will get you some basic understanding of the Spring Framework. I guess it’s hard to cover Spring in 43 pages.

After the cursory introduction to Spring, the book moves into Aspect-Orientated programming (AOP) concepts. This section starts with a very introduction to AOP before jumping into AOP implementation strategies. After a brief discussion of AspectJ, AspectWerkz, and JBoss AOP, the authors move into SpringAOP. After AOP, the books moves into Transaction Management where current J2EE approaches are discussed and then contrasted with the Spring approach.

Persistence is the next item tackled in the book and this section includes a really nice discussion of why you need a persistence strategy, when to choose O/R mapping vs. straight JDBC. After a walkthrough of the Java persistence technologies, the book moves into practical items and discusses Persistence in detail. Starting with JDBC, the authors contrast that approach with iBATIS SQL Maps, JDO, and Hibernate. The section on Data Access Object (DAO) pattern discusses the J2EE pattern and discusses some of the common design issues faced by developers. After the discussion, the book moves into discussing how data access works with the Spring framework and discusses Spring’s DAO framework and how it works transparently with persistence technologies including iBATIS, Hibernate, JDO and straight JDBC. As an aside, if you haven’t looked at Spring or just it’s DAO framework, you should explore it as it simplifies the development process and minimizes the amount of code you write. I just rewrote some of my POC applications using Spring’s DAO framework that used iBATIS and Hibernate under the covers. By using the template classes provided by Spring, I wrote about 30-40% of the code I would have normally written using iBATIS or Hibernate by themselves. The Spring Framework includes a reworked version of the original JPetStore application that uses Spring’s DAO framework along with iBATIS SQL Maps.

After persistence, the book moves to Remoting and the idea of exposing business logic or services to remote client. One of the major benefits of EJB is the ability to remote anything exposed at the bean layer. This chapter starts off by discussing how to access an EJB from a Spring application using the JndiObjectFactoryBean. The setup is so simple and IoC makes lookup, creation of home, etc so easy with the declarative configuration. After EJB, the chapter moves to Web Services and JAX-RPC. Again the authors walk through the steps needed to consume JAX-RPC via. JNDI and demonstrate the elegance and simplicity with which Spring integrates into and consumes existing J2EE services. This chapter also includes discussion of Hessian and Burlap and the concept of lightweight remoting.

The next chapter in the book discusses the other EJB services that the container provides and talks about how to replace them. This section breaks down the do’s and don’ts in terms of threading and pooling that is typically provided by an EJB container. There is a brief mention of security in this chapter.

The next section of the book discusses web tier design and dives into the current state of Web Model2 MVC frameworks. The section starts off with a look at Struts before jumping into WebWork. After the intros, the authors describe the Web MVC framework built into Spring. One of the things that I absolutely love about this book is the use of the dark gray boxes to summarize a topic, offer tips and advice or offer a best practice.

The next chapter is one of my favorite chapters in this book and it deals with the idea of unit testing and testability. Anyone that has written a J2EE application will attest to the fact that J2EE apps are really hard to test. There are a lot of testing frameworks in the market now but they require either too much setup or are really cumbersome to use and end up diluting the value they were supposed to offer. This section discusses some of the anti-patterns that are the de-facto standards in J2EE. I love the techniques offered in this section to improve testability. After an overview of testing, the book moves into a discussion of Mock Objects and the how, why and when of using Mock Objects in your development/testing lifecycle. The book then moves into Test-driven development (TDD) and offers a case study of how TDD has helped with the development of the Spring framework itself.

The last section before the sample application is on performance and scalability. This is another great chapter that should be mandatory reading for every developer. In this chapter, the authors discuss the challenges faced in building distributed multi-tier applications. There is a section that breaks down the architectural tiers and some of the common issues faced by every application developer. Very nicely written chapter and I glad the authors included a section on Profiling.

After performance, the book jumps into the sample JPetStore application that ships with the Spring Framework. The authors start off by discussing some of the shortcomings on the JPetStore application and then employ Spring to solve some of those issues. The JPetStore application is a great tutorial application for anyone learning Spring.

The book closes out with the conclusion section where the authors wrap-up and summarize some of their points outlined throughout the book.

Having read this book several times, I have to say that this has to be one of my favorite books of 2004. I love the clear, concise writing style of the authors. This is a great book and a must for every developer’s library. While this is not a Spring tutorial book, you will learn enough about Spring to want more, a lot more. I highly recommend this book and encourage you to run to your local bookstore or computer and get this book.

If you are looking for a Spring book from the source, you’ll have to wait for Rod’s new book entitled Professional Java Development with the Spring Framework co-authored with Juergen Hoeller, Alef Arendsen, Thomas Risberg, Dmitriy Kopylenko or wait for Keith Donald’s Spring book.