I was working on this great Apex plugin to load Excel sheets with more than 50 columns into the database. And because I had all those great, but secret ideas, to solve all the problems I used a wrapped package to store all the functionality of the plugin. (more…)
One of my colleagues had an interesting challenge. In an Oracle Database he has a table that contains an XMLType column. The column contains XML documents with people collections. This data is retrieved and transformed inside the database using an XSLT stylesheet, to a format – for example XHTML – that can be served directly to an end user in a browser. However, the XMLType contains a country code element where the displayed data should show the name of the country. There is a lookup table that contains the country data; this table can be used to enrich the data in the XMLType. The question now was: what is the best moment in the processing pipeline (query => transform => output) to perform this enrichment. The definition of ‘best’ should include performance, scalability, programming effort and (infrastructural) complexity.
One of the options we discussed was enriching in the first stage of the pipeline, as part of the retrieval step. This would be done using an XQuery operation against the XMLType, producing another [enriched] XMLType that would be fed into the XSLT transformation. This article shows how that could be done. Using the experienced insights of my colleague Marco More >
The convergence project between Oracle’s JVMs JRockit and Hotspot is making significant progress. Included in the latest Java 7 JDK update (’7u40′) is a new powerful monitor tool: Java Mission Control (JMC). JMC is a production time tool that has its roots in the JRockit JVM tooling. It is located in the bin folder of your 7u40 JDK. At JavaOne I attended some interesting sessions by Marcus Hirt (Oracle) on this new Java Mission Control. In this article I will describe an introduction based on my session notes to get you started and links to further explore JMC.
Part of the evolution of Java in release 8 consists of Lambda expressions. These ‘functional expressions treated as variables’ introduce a powerful Inversion of Control in Java – allowing a clear and elegant distinction between the what [should be done] and how [should it be done]. The Collection APIs have been extended with the notion of Streams to make great use of these lambda expressions. This article shows some examples of what this means, leading up to the revelation that under certain circumstances Java is very similar to SQL.
A Stream is an interface. It is a “[…] potentially infinite sequence of elements. A stream is a consumable data structure. The elements of the stream are available for consumption by either iteration or an operation. Once consumed the elements are no longer available from the stream.” Any collection – as well as several other sources – can be exposed as a Stream. On such as stream, a number of operations – aka a pipeline – can be performed. These operations are either intermediate or terminal:
- intermediate – such as map, filter, sorted, distinct, limit, skip, substream, concat that produce a stream from a stream
- terminal – such as forEach, reduce, More >
For me this year’s Open World has three main themes: Community, Cloud and Mobile.
Although actually it included a fourth theme: the America’s Cup. The fabulous comeback of Team America and the spectacular sailing lead to an extra vibe during the conference. And although the media footage provided the best way to view the races, nothing beats the experience of standing ashore and watching the boats ‘fly by’ in real life.
Unfortunately the sailing also disrupted Larry’s keynote about the cloud but fortunately Thomas Kurian did an excellent job on that one. For me that keynote was one of the most interesting of the conference because it provided an overview of the big ambitions of Oracle for the clouds. A bit to my surprise, it also included an announcement by Microsoft about the availability of the Oracle Database, Oracle Weblogic and Java (either on Windows or Linux) in the Microsoft Azure cloud.
The cloud offerings are still increasing and now encompass a clear SAAS, PAAS and IAAS strategy. Fusion Applications modules like Human Capital Management, CRM and ERP and others are (or will become) available as Software Services, supplemented with social services. The database, More >
Java 8 offers wonderful opportunities and new interesting intellectual challenges for Java developers. With this upcoming release, we are once again focused on programming itself – instead of yet another framework – and learning new programming concepts. The introduction of Generics was the last time Java programming was significantly changed – quite some time ago – and this time this change is both more fundamental and more rewarding. Lambda expressions allow for new, compact, elegant ways of programming that bring the notion of Inversion of Control to the core Java programming language. The language itself as well as APIs created with it can make the distinction between the what [should be done] and the how [should be it done]. The what is expressed in a Lambda expression – a function that can be passed around as a parameter – and the how is left to the API implementation or indeed the JVM itself. A great example of this distinction is found in the parallel execution supported in the Collection classes. Another good example is the tremendous elegance of code that performs a series of operations (such as filter, extract, aggregate, operate). More on these operations on More >