skip to main |
skip to sidebar
- 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”."
- Need to know whether a collection is modified concurrently, which causes the ConcurrentModificationException? Check this handy wrapper solution here.
- The second article in the Transaction strategies series. "Using examples from the Spring Framework and the Enterprise JavaBeans (EJB) 3.0 specification, explained is how the transaction models work and how they can form the basis for developing transaction strategies ranging from basic transaction processing to high-speed transaction-processing systems".
- For the Amazon EC2 now a free AWS Eclipse plugin is available. It facilitates remote development, deployment, and debugging Java applications on Amazon Web Services.
- Three common mistakes to avoid when implementing XML and webservices: don't make your messages too large, don't create too fine-grained services, and don't forget to create an XML schema.
- Javascript is getting more and more important the last couple of years, so here's a bunch of best practices and efficiency tips.
- Great article by Dion Hinchcliffe with 10 emerging technologies every software architect has to know about. In short:
- Cloud computing
- Non-relational databases
- Next-generation distributed computing
- Web-oriented architecture (WOA)
- Mashups
- Open supply chains via APIs
- Dynamic languages (e.g Rails, PHP compared to Java/.Net)
- Social computing
- Crowdsourcing and peer production architectures
- New Application Models (e.g the symantic web, opensocial, widgets)
- Elaborate explanation of managing boilerplate text (e.g. titles, button labels, prompt, error messages, tool tips) in JSF applications. This includes more advanced locale requirements, like certain text that needs to be different when shown to junior and senior users.
- Here's a nice diagram with an overview of what activities are needed to create a website, from idea to support and everything in between.

- Always annoyed that you have to manually close a resource like InputStreams, Connections etc? And that the first exception might be surpressed by the second in the finally block? Here's a suggested solution: the Automatic Resource Management pattern by Joshua Bloch.
- Ten more Eclipse shortcuts you maybe didn't know...
- Of course you've heard/read that Microsoft has released IE8 last week. Here's a bunch of tips when migrating your site from IE7 to IE8.
- Ever need to create a UUID/GUID? Here's a few offline generators compared. uuidgen is an online UUID generator supporting version 1 and 4. A handy FAQ on UUIDs with some more depth can be found here.
- Five performance anti-patterns in the data-access layer in database-driven applications. The following are described:
- Misuse of O/R Mappers: loading behaviour and loading time (e.g lazy loading)
- Load More Data Then Needed
- Inadequate Usage of Resources: database connections
- One Bunch of Everything: all data access is treated equally (e.g access frequency)
- Bad testing
- An investigation on how the front-end of iWork.com has been built. Used are SproutCore(Javascript framework), Prototype, WebDAV and JSON.
- 50 minutes video presentation on Orbitz.com's architecture. Brian Zimmer describes a search and booking example for seats and beds. Problems they came across for example are: i18n, distance estimations. Disclaimer: the architecture is not perfect and always in motion. Orbitz.com is a Java shop, amongst others they use: Spring, Spring Web Flow, Tomcat and Joda Time (side-step: much learned from the Joda Time project is being implemented in JSR 310, led by the Joda Time project lead), Log4J, searchable (query-like) complex event processing mainly for logging/monitoring(!) and throttling, multi-threading, caching, availability and Jini.
- Performance comparison of four JPA implementations: Hibernate, Toplink Essentials, OpenJPA and EclipseLink. Only JPA was used in the tests. Conclusion: there's no clear winner, all have good and bad things on different points like CPU or memory.
- Will building desktop Linux applications with Javascript be the next re/evolution for Javascript?
- 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.
- 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):
