skip to main |
skip to sidebar
- 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.
- Interesting comparison whether and when to use SOAP or REST.
- OpenSocial now has Java, PHP, Ruby and Python client libraries available.
- A few weeks ago, PKI which uses MD5 as cryptographic hash function, has now officially been broken at the hackers convention Chaos Communication Congress 2008. Six Certificate Authorities still give out MD5-signed certificates as mentioned in the article. Since 2004 it is already known that MD5-collisions can be created for different data. Therefore, certificates should be issued with at least SHA-1 encryption. Here's a summary of what an MD5 collision is and what Mozilla and Microsoft issued as advisories. Additionally some (other) SSL issues are described.
- Nice summary of lessons learned during a project using GWT, Axis and JPA. Some more comments here.
- Paper by Kate McKinley (a researcher at iSec Partners, a San Francisco security firm) on the privacy protection mechanisms of FireFox, Chrome, IE and Safari. Conclusion: "We find current browsers are unable to extend tracking protection to third party plug-ins such as Google Gears and Adobe Flash. Some of these require no user prompting under common configurations and even expose tracking data saved with one browser sites visited by a different browser. [...] Safari on Windows fared the worst of all in these tests with respect to private browsing, and did not clear any data at all, either before entering or after exiting the private mode. On OS X, Safari’s behavior was quirky; in no case was the HTML 5 database storage cleared before or after private browsing.".
- Spring's Web Flow 2 now lets you use JSF as view technology. It addresses a couple of the existing JSF issues and already some features only present in JSF 2.0.
- Microsoft (yes yes, don't stop reading immediately ;-) has published a How-To Design Using Agile Architecture guide which "will help you start the process of designing your application. It discusses the six main steps you should follow, and then discusses the issues involved in making logical choices. It also provides checklists to help you ensure that the proposed design will meet your requirements", including patterns, best practices and agile considerations. This is a quick summary of the guide.
- A tiny bit off-track, but still interesting to point out: of course you know Google's GWT, in which you can create a Javascript web front-end application in Java. But now this is also possible in Python (recently releasing version 3) with Pyamas! Pretty cool!
- Talking about software architecture, how would you document that correctly? Here's a bunch of good tips trying to answer that. It is a good high-level overview of what you should document in an application architecture. Focus is on UML 2.0, but what should be in the documentation is valid for any notation format.
- Here's the first list (and maybe last :-) I'll post on looking back @ 2008: on overview of what happened with Java in 2008.
- It seems the SOA world is finally starting to take the Web-Oriented Architecture seriously.
- Summary of a recent whitepaper from IBM Global Services describing five high level best practices for successful deployment of an SOA. 120 IT Architects, developers, IT Specialists and project managers evaluated nearly 100 case studies, with 750 lessons learned and 650 best practices.
- SpringSource announced a maintenance policy for SpringSource Enterprise. Definitely check Rod Johnson's clarification comment in this thread on The ServerSide. Important to verify when you're using Spring in your company.
- Elaborate introduction to persistence, ORM and JPA, and a comprison of two open source persistence frameworks: iBATIS and Hibernate. Notable points: iBATIS encourages the direct use of SQL queries; it enables the object model and the data model to be independent of eachother via its data mapper (compared to a metadata mapper framework like Hibernate). Note that fully ORM tools generate SQL, where iBATIS uses SQL directly. A nice quick overview of the Hibernate architecture is described; the diagram is shown below:

Recommendations from the article:
- Use iBATIS when you need full control of the SQL
- Don't use iBATIS when you are in full control of both the application (with its domain model) and the data model.
- Don't use iBATIS when the database is non-relational
- Use Hibernate to leverage end-to-end OR mapping
- A potential reason to use it could be that it is more easy to use for object-oriented programmers who are less familiar with SQL
- Use JPA when you need a standards-based persistence solution
My own recommendations:
- With Hibernate it might be harder to tune the queries because they are generated by Hibernate. You can't really "just handover" the queries to the DBA. The DBA will have to monitor the database for bad queries.
- Hibernate gets quite complex when you have to map more complex associations (like a unidirectional many-to-many association with custom columns added to the link-table). I've never used iBatis so can't tell how hard it is for that framework.
- When trying to only use JPA defined elements, you'll find that JPA's possibilities are quite limited (e.g. caching is not well defined in JPA), and that you quickly will start to use (ORM-tool) implementation specific features. A good way to implement this, is to specify the full package path when using implementation specific annotations. That way you can see where you deviate from the JPA standard.
- An update how OpenSocial is doing...
- 12 good Hibernate tips you might not know.
- A list of the 10 worst scalability practices/anti-patterns for large distributed systems. The areas covered are: the golden hammer: use of only 1 technology, resource abuse, big ball of mud: bad versioning/deployment management, everything or something: packaging of the application, forgetting to check the time (did you know that only just recently, since JDK 1.5, you can set timeout on reads on HTTPURLConnection? And that DNS lookups in Java are cached for the lifetime of the JVM unless configured differently?), the hero pattern: one operational "do it all", not automating deployment, build etc, and finally: monitoring of the system.
- In case you lived under a rock the last week without Internet access :-), Google introduced its browser: Chrome.
A couple of interesting things from posts around The Net: Chrome does a better job on the ACID test than the latest Firefox 3 build and IE 7.
The first performances tests show that Chrome's performance is outperforming all the current browsers!
Mozilla countered this with another test using their new javascript engine TraceMonkey, which should be released by the end of the year in Firefox 3.1. And this is the current standing in browser marketshare.
Quite a big surprise is that it is currently only available for Windows. Clearly Google is going for marketshare by addressing the users of the most used operating system... And finally, below is an overview how Chrome got its logo (via neatorama, with custom edit):

- Patterns-based Evaluation of Open Source BPM Systems: jBPM, OpenWFE, and Enhydra Shark. Report's conclusion: "Overall one can conclude that the open source systems are geared more towards developers than business analysts. If one is proficient with Java, jBPM may be a good choice, although if not, choosing jBPM is less advisable. Similarly, whilst OpenWFE has a powerful language for workflow specification in terms of its support for the workflow patterns, we postulate that it will be difficult to understand by non-programmers. Finally, Endydra Shark’s minimalistic support for the workflow patterns may require complicated work-arounds for capturing nontrivial business scenarios."
- As part of their EC2 offering, Amazon introduced this week their Elastic Block Store, enabling you to mount an EBS and format it or setup a database on it. S3 is not really intended for database-like storage. Here's another introduction, including a link to an article on how to setup MySQL on EBS. Here's ESB explained, including some diagrams.
- Article on the succesful execution of a large project (20 man years, 100.000+ lines of code) with an Agile approach using Scrum, with developers from India and The Netherlands. Includes lessons learned. Technologies used: Java, Spring, Hibernate, WebLogic, Oracle, Swing (UI) and Flex (for the displays) and Bamboo (continuous integration).
- Handy short comparison between LWUIT (recently open sourced by Sun) and JavaFX Mobile. Here's another comparison from Sun.