skip to main |
skip to sidebar
- Five new features of Spring 3.0 described:
- Spring Expression Language (SpEL)
- Object/XML Mapping (OXM) module
- Type-conversion system
- Formatter SPI
- RESTful web services support
What new Ajax simplifications have been introduced can be found here.
- The Java EE 6 web tier introduces with Servlet 3.0 spec the ability for asynchronous processing of requests so that the thread may return to the container and perform other tasks. It also "adds annotation based configuration (@WebServlet, @ServletFilter and @WebServletContextListener) making the web.xml file optional, and introduces a new concept of web fragments."
- Introductionary article to Apache Click. One difference between Click and Wicket is that Click is stateless by design, while Wicket is stateful. Both can be configured their "opposite" model, though these have their own pros/cons.
Another main difference is that that Click uses templates (Velocity by default) where Wicket does not.
Sidestep: here's a bunch of nicely designed Wicket sites that scale (note: not really clear where the scalability statements come from).
- A 60 minutes presentation on how SOA is a hit at eBay.
- Great overview of (most of) Spring's portfolio. Includes tips on when you might want to choose Spring, and when not. Also shortly describes what's new in Spring 3.0.
- Google has opensourced a bunch of their Javascript libraries, which they use in Gmail, Google Docs and Google maps:
- "Closure Compiler is a JavaScript optimizer that compiles web apps down into compact, high-performance JavaScript code."
- "Closure Library is a broad, well-tested, modular, and cross-browser JavaScript library. Web developers can pull just what they need from a wide set of reusable UI widgets and controls, as well as lower-level utilities for the DOM, server communication, animation, data structures, unit testing, rich-text editing, and much, much more."
- "Closure Templates grew out of a desire for web templates that are precompiled to efficient JavaScript."
- "Closure Inspector, a Firebug extension that makes debugging the obfuscated code almost as easy as debugging the human-readable source."
Quite a terrible name btw, since you also have regular closures in Javascript... The name came from bringing closure to their whole mess of Javascript libs they'd made.
A short comparison between the compression performance of YUI Compressor and Google Closer Compiler using the well-known Javascript Frameworks - Mootools, JQuery and Prototype can be found here.
- Analysis and tips on how to improve https performance.
- IBM’s Jens Andexer and Willem Bekker from Standard Bank provide some samples of the good, the bad and the ugly business aspects of SOA.
- A post on experiences with Git coming from Subversion. Too bad the reasons why the author is having more and more problems with Subversion were not given. Though you can deduct (some(?) of) them from the text.
- Presentation by John Resig (from JQuery fame) on testing javascript. Shortly describes QUnit, JSUnit, YUITest for unittesting, Screw.Unit, JSSpec for behavior testing (unittesting broken up by task), Selenium for functional testing and Crosscheck, Env.js, Blueridge for server-side Javascript testing. Also describes browser launching, which I would translate into "build/test management", distributed testing (Selenium, TestSwarm) and browser support (cost vs benefit).
- "A Decade of SOA: Where are we, Where are we Going?" The viewpoints from a virtual panel of Enterprise Architects who have lived and implemented SOA for most of this decade.
- Why iStockphoto embraced Google's Gears.
- And as grand final this week: the hardware and (rails) software architecture of Ravelry, a knit and crochet community.
- Last week was Oracle Open World 2009. Beside for Oracle DBMS and SOA specialists, these days the event is definitely also very relevant to Java professionals because of Oracle's (almost official) acquisition of Sun this year. Here's a set of relevant information from OOW:
- The keynote on sunday which also describes the plans Oracle has with Java, MySQL and Sun hardware
- James Gosling explaining to the developer audience what Sun was doing, what the scale is of Java activity around the world and across technology platforms.
- The Dutch software company Amis also did quite a few presentations at OOW. Some of those presentations were already online before they were actually presented! All were interesting:
- Good overview of what will be in the Patch Set 1 for the Oracle Fusion Middleware 11g stack, including JSF and ADF (mobile!). It's more than a patch!
- Edition Based Redefinition (EBR): "Every database object (well, almost every database object - not tables!) can have different implementations/incarnations/versions in various editions. The object versions are all in the same schema - they only differ in the Edition they are created in."
So no more direct table access! No big bang needed anymore. Challenges: what if a mandatory column is removed or added from the current EBR view (answer: special triggers). Including 2 suggestions for best practices.
- XML processing/design tips.
- This "session introduces SOA and the new Oracle SOA Suite 11g to the realm of database professionals from which it sometimes seems so far removed. What are the key SOA concepts and objectives? What is at the heart of Oracle SOA Suite 11g: composite applications, BPEL PM, and the mediator. The session shows how SOA services can be leveraged from the database, from triggers, PL/SQL units, or even SQL and how the database can publish events to the event delivery network. It covers how the SOA infrastructure can access the database, primarily using Oracle Database and Oracle Advanced Queueing adapter and how database developers can help in doing so efficiently. It ends with hints for applying SOA concepts to "normal" database development."
Bit oriented at the database professional, but still interesting for those who want to stay up to date with Oracle's DMBS possibilities. And a bit scary too: it is possible in 11g to make webservice calls and publish them from the database(!). For example from PL/SLQ and put a webservice in front of PL/SQL... I haven't come up with a practical situation where you'd want to do this from an architectural point of view: large risk to getting tightly coupled systems and dependencies. If you have heavily invested (i.e built) in PL/SQL, it might be a valid option though.
There is currently a renewed focus on the role of code generation in developing enterprise Java applications. Springsource recently released Roo, Skyway Software released Skyway Builder Community Edition version 6.3 and Blu Age released M2Spring. What should the software architects and developers look for in a Code Generation framework?
Seven Wicket Do's and Don'ts.
- Always feeling a bit less up-to-date when using RSS/Atom feeds? Well, convince your RSS/Atom provider to implement the PubSubHubBub protocol: it provides a callback-hook, which when registered to as feed subscriber, causes an immediate update (ping) to the subscriber (instead of waiting for the next RSS/Atom feed request).
Or will rssCloud be the winner of this realtime RSS extension? Here's the basic (simpler) flow of rssCloud:

Differences between the two are described here (including some issues) and here. A real old-fashioned flame-war has even started between the creators of the two protocols.
And a good comparison which explains quite well why PuSH is the better choice of the two. Note that both protocols seem to be server-to-server only! (e.g think when you're behind a firewall or NAT...)
See this article for an explanation of the PuSH flow of notifications/information in below's diagram:

Update: PubSubHubbub explained by co-creator Brett Slatkin (an engineer at Google).
- Want to get to know Hadoop? In short "Hadoop allows you to write and run your application in a distributed manner and process large amounts of data with it. It consists out of a MapReduce implementation and a distributed file system." Check the rest of this introduction for more details.
- Five Java anti-patterns to prevent (out-of) memory problems.
- Three Best and three worst practices in BPM and SOA.
- "Tom Killalea, Vice President of technology with responsibility for infrastructure and distributed systems engineering at Amazon.com wrote an article on ACM queue on building scalable web services. He outlines guiding principles to building scalable web services with a lot of real-world examples, the core theme of which is “build only what you need”."
- Wondering whether you should add this new piece of functionality quick & dirty or take a bit longer, but cleaner? Taking the first one sets you up for a Technical Debt, as some more explained by Martin Fowler.
- "Test logic can be buried in this unrelated code, which has nothing to do with test logic itself, making test code hard to read and maintain. In this article, the layered architecture of test automation is presented to solve this problem. In this layered architecture, the test automation code is divided into three layers: (1) test cases, focusing on the test logic of the application, (2) the domain layer, modeling the system under test in domain terms, encapsulating http requests, browser control, result parsing logic and providing an interface for the test cases layer, (3) the system under test, which layer 2 will operate directly on."
- A good explanation of the Canonical Message Model in the context of an ESB, and why you'd need one within an SOA. Great description of different approaches for implementing a CMM in an ESB and their pros and cons.
A short introduction to CMM modelling (data model and message model) is described here.
- From The Open Group two free PDF books: "The Open Group SOA Integration Maturity Model (OSIMM) provides consultants and IT practitioners with a means to assess an organization’s Service Oriented Architecture (SOA) maturity level."
"This document describes a framework that provides context and definitions to enable organizations to understand and deploy SOA Governance."
- The JavaServer Faces 2.0 specification (included in JEE6) got finalised last May. Here's a reference to it and a set of references related to this specification.
- Always interesting the Gartner 2009 Hype Cycle. For example, Web 2.0 is already on the way up again, while microblogging (e.g Twitter) is starting its downward trend.
- Code review tools Review Board: "is a powerful web-based code review tool that offers developers an easy way to handle code reviews. It scales well from small projects to large companies and offers a variety of tools to take much of the stress and time out of the code review process." Downloadable.
- Great description on how full-scale Scrum was applied at a JTeam project. It includes answer to the why and what went well and what can be improved. Also shortly the used technologies are described (Spring, Spring WS, Spring MVC, JPA, JExcelApi, Apache Commons for FTP, iText for addresslabels with bar codes, jQuery and Google Maps, Mockito (see this post on why they switched from EasyMock), MockFTPServer and Subethamail Wiser for email integration testing. Again, great that they share this publicly.
- Discussion of the quality assurance/testing challenges to be addressed with a SOA adoption, recommended best practices, and lessons learned.
- More or less a beginner's introduction to the Java Collections framework and algorithms. Sample chapter from "Core Java 2, Volume II - Advanced Features 7th Edition". Uses CircularArrayQueue and LinkedListQueue as examples (how often have you used those two? ;)
- "A discussion on the lifecycle processes of SOA governance, how SOA governance can become more mature, and how a maturity model can be used to support this growth, and the role of the architect in SOA governance, providing some practical guidelines for architects in a maturing SOA environment."
- Two great interviews with Jeff Davis about his "Open Source SOA" book, recently released. The first interview has mainly questions about the book itself. The second interview has quite some questions about stuff not in the book. A free excerpt of 1 chapter of the book is also available for download! The book itself describes many open source SOA products, helping you in selecting the right one and how/where to use it. Btw, CEP = Complex Event Processing. See for more here.
- jQuery 1.3 optimisation & advanced tips including example code on: unbind(), live()/die(), Ajax Queue and Ajax Sync, and Namespaces.
- Summary of implementations of the Builder pattern suggested by Joshua Blog during JavaOne 2007. Note that it is different from the GoF pattern.
Related: interview with Joshua Bloch with many tips and best practices, most referring to Effictive Java 2nd Edition. E.g: generics, enums, annotataions, wildcards, lazy initialisation, strange things about Java.
- Kind of obvious observation (but still worth mentioning :) viewpoint on scalable web architectures and application state: don't store everything in the database, but treat (and "store") application state, cached data, and persistent data differently, using dedicated tools to manage these.
- This week Wicket 1.4 has been released.
- Handy tip for creating testdata for your testclasses via "factory" helper classes, to prevent copying the construction of this testdata again and again.
There's also a database version.
- A comparison of the following opensource search engines: Lucene, Zettair, Indri, Sphinx, and Xapian.
- Best practices for using the Java Native Interface.
- A great "free PDF White Paper from OASIS, OMG, and The Open Group was written to help the SOA community at large to navigate the myriad of overlapping technical products produced by these organizations with specific emphasis on the “A” in SOA; i.e., Architecture. The docment explains and positions architectural standards for SOA reference models and ontologies, reference architectures, maturity models, SOA modeling profiles, and open standards work related to the topic of SOA governance. It also outlines the agreement on core SOA and SOA governance concepts."
- How bad can one GOTO statement really be? ;)

- Reference to an AJAX framework analysis/comparison result by Matt Raible (for example known for his framework of frameworks: AppFuse). Compared were Dojo, Ext JS, GWT, and YUI. Check also the comments.
- Beginners level host and Java performance tuning concepts.
- Handy PHP profiler and debugging tool/library. Helps you with logging, memory usage, double includes, page execution time and database activity monitoring.
- Nice presentation on scalable web architectures from Cal Henderson, (ex) Flicker architect. Including horizontal vs vertical, architecture, sessions, load balancing, queuing, relational data, caching, H(ighly) A(vailable) data, federation, serving and storing files, CDN, real-world examples.
- SpringSource has created Roo, a sophisticated round-tripping code generator that should make it quicker and easier to create and evolve Spring applications.
- Funny: how to measure code quality: WTFs/minute :)

Via.
- You as a developer can now go social on IBM's myDeveloperWorks, a social network spun off of developerWorks.
- An introduction on how one could formalize a SOA using WS-CDL, including a few real-world insurance based uses.
- Yahoo has just released a major update for their innovative YQL. "The Yahoo! Query Language lets you query, filter, and join data across any web data source or service on the web. Using our YQL web service, apps run faster with fewer lines of code and a smaller network footprint. YQL uses a SQL-like language because it is a familiar and intuitive method for developers to access data. YQL treats the entire web as a source of table data, enabling developers to select * from Internet." The update adds "Execute", with which "developers now have full control of how the data is fetched into YQL and how it’s presented back to the user. With Open Data Tables, developers can build tables that manipulate, change, and sign the URLs to access almost any protected content, allowing YQL access and combining data across a variety of different authenticated services such as Netflix or Twitter. Developers can call multiple services and data sources within Execute to join and mashup data however they desire, letting Yahoo! do the work rather than their applications. Data can be tweaked and manipulated into an optimal format for applications to consume." Another example of what is possible can be found here. Check also this article for more explanations.
- A table-based quick review of the following RIA frameworks: GWT 1.5, Laszlo 4.2, pure Javascript and Flex 3.2.
- A short introduction on how ActionScript 3 differs (and not) from Java.
- A wiki constructed with over four dozen architects: 97 things every software architect should know. Also now available as a book. It includes advice such as:
- Don't Put Your Resume Ahead of the Requirements (Nitin Borwankar)
- Chances Are, Your Biggest Problem Isn't Technical (Mark Ramm)
- Communication Is King; Clarity and Leadership, Its Humble Servants (Mark Richards)
- Simplicity Before Generality, Use Before Reuse (Kevlin Henney)
- For the End User, the Interface Is the System (Vinayak Hegde)
- It's Never Too Early to Think About Performance (Rebecca Parsons)
- An introduction to Object Oriented CSS.
- Sample chapter from Thomas Erl's latest SOA Design Patterns book, and an interview with him. He "talks about the main benefits of having a pattern catalog, SOA and Web services, the current state of SOA, the difference between SOA and service orientation, and the role of patterns in SOA adoption".
- A series of five articles on setting up a Java Wicket project and implementing a frontend with it.
- Handy piece of (alpha) software to test IE8 RC1, IE7, IE6 and IE5.5 on Vista and XP. Note that it looks like Microsoft is releasing IE8 this coming week, so get ready...
- This week a new web-based online code editor from Mozilla Labs. Javascript, HTML and CSS support are in this first beta release. All made in Javascript and requires Canvas support. One of the goals is to create new useful functionality for the code editor. Check the video for a full introduction.
- You can now get your IBM licensed software on Amazon's EC2 AMIs. Development AMIs with IBM software on them are also available at no additional fee. In the future it will also be possible to purchase these services by the hour. Initially available are: IBM DB2, IBM Informix, WebSphere sMash, IBM Lotus Web Content Management, and IBM WebSphere Portal Server. No I'm not sponsored by IBM, but I do think it's a smart move.
- RWW is noticing there is a trend towards a different type of databases than relational databases. There's increased interest in key/value pair storage, e.g Distributed Hash Tables. Pros and cons are described. Example cloud initiatives of these key/value storages are: Google's AppEngine Datastore (built on BigTable), SimpleDB by Amazon and Microsoft's SQL Data Services.
Non-cloud initiatives are CouchDB, Project Voldemort, Mongo and Drizzle (this last one is more or less a mix of the two paradigms).
- An application architecture pattern for RIA applications. At the end of the pattern the implementation is based on MS frameworks/tools but pattern is technology-agnostic.
- Summary of a SOA case study at Cisco.
- A nice set of coding tips for writing efficient Android code by Google, essential for Android since it runs on embedded systems. Still the tips are so generic you can apply quite a few of them in regular Java applications too.
- And as the last item for this week: an overview of the expected changes in Java EE 6.
- In SOA lessons learned for Web 2.0 "two experienced SOA architects look at the new world of Web 2.0 technologies with a critical eye and present five best practices that can help you be more successful in adopting Ajax, REST, and other Web 2.0 technologies as part of your SOA."
- A quick comparison between Echo2 and GWT. Both enable you to create a rich internet application with only Java using a component-based approach. Wicket is also component based, but requires still to work with HTML; not necessarily a negative thing! For example, how will you split the work between the user interface designer and developers with Echo2 and GWT?
- A nice extensive summary of Model Driven Development misperceptions and challenges. Five challenges and five misconceptions in total.
- A whitepaper named "Centralized Service-Oriented Architectures without ESB" which shows how to create service-oriented architecture in a Google-like way, that is services around huge data repository, but without ESB. It is based on experience of the writers in data warehouses, Wiki and telecommunication systems. Thus, proposed is not really an ESB, but an architecture that's more like a centralised repository with distributed caching. Of course this comes with its own set of pros and cons, as mentioned in the whitepaper.