Last week – just when I was at the far end of a narrow internet connection – Oracle released JDeveloper 12c (12.1.2) along with ADF 12c and WebLogic 12c (12.1.2). Hot on the heels of Oracle Database 12c (12.1.2), which was released on June 25th – about two weeks earlier. The next figure gives an overview of recent new releases. It is clear that we are in a turbulent period right now – which also includes Java EE 7 (about a month ago) and the upcoming Java SE 8 release (next month). All in all there will be plenty to talk about at JavaOne and Oracle OpenWorld in September.
What is the significance of this ADF and JDeveloper release? What are the important themes and key features? Wow, that is a big question to ask and even more so to answer.
Clearly what this release does is reuniting the two streams – 11gR1 and 11gR2 – that had come into existence initially with the support for JSF 2 (Java EE 6) in the first 11gR2 split off, back in early 2011. The headache that many teams had over which version to use – 11gR1 or 11gR2 – can now be relegated to the past. A good explanation of when to use which release can be found here: https://blogs.oracle.com/imc/entry/oracle_jdeveloper_12c_released in the Oracle blog article Oracle JDeveloper 12c Released by Thanos.
JDeveloper new features
An overview of new features in JDeveloper en ADF is published by Oracle: http://www.oracle.com/technetwork/developer-tools/jdev/documentation/1212-nf-1964675.html.
Apart from the new logo, a striking area of improvement in JDeveloper are the many IDE improvements, to a large degree the outcome of close collaboration at Oracle with the NetBeans team. The IDE feels smoother, more responsive, leaner. Some concrete features: Ability to drag-and-drop to reorder editor tabs, Ability to float editor windows outside of the IDE, Fully customizable toolbar and Drag-and-drop reshaping/resizing of docking areas. Also: Define custom file templates and invoke them from the gallery. An option familiar in other IDEs: A new preference allows you to specify that JDeveloper should compile your modified files automatically after saving.
Pretty spectacular is the option to visualize your application and how the various resources are dependent on each other with the new dependency viewer (see Andrejus’ article http://andrejusb.blogspot.nl/2013/07/jdeveloper-12c-new-feature-explore.html) – similar to and perhaps based on the AppXray in OEPE.
Interesting is the live Community page that shows recent news and blog articles (based on the RSS feed at http://feeds.pinboard.in/rss/u%3AOracleADF/):
The Maven support in JDeveloper seems much expanded, including 3.0 support and the long sought after POM files provided for ADF libraries (which means my colleague Aino is off the hook!). Also Maven plugins for ojmake and ojdeploy and the option to create project from archetype. Also an Overview editor for POM files and the ability to generate and view an effective POM, manage Maven profiles, plugins, dependencies, and more within Overview editor. Option to use Maven as the build tool when creating a new application.
It seems that ADF development at last enters the world of mainstream Java development and software engineering (like the rest of the world does it). Support for Git as source code control system is also introduced for those going beyond Subversion.
Profiling is improved by combining JDeveloper functionality with NetBeans tooling. Improvements are available in refactoring and the Java code editor: from better breadcrumbs, to improved code insight and Smart move lines.
Java EE and ADF 12c – new features
Note: many features slated for 12c were already released either in 11gR2 or in 11gR1 Patch Set 6 (18.104.22.168) which was released only a few months back (see new features in 11gR1 PS6: http://www.oracle.com/technetwork/developer-tools/jdev/index-088099.html). So while not brand new – they are still quite new. For example some of my favorite new ADF DVT components – Timeline, Treemap and Sunburst – were available in PS 6 and of course again in 12cR1. The same applies to the Skyros skin, the List View component and the Code Editor and PanelGridLayout components.
With regard to non-ADF Java EE 6 development: JDeveloper wizards and editors have been updated to work with Java EE 6 specifications, including EJB 3.1, Servlet 3.0, CDI, JPA 2.0, EL 2.2, and more. The editors have been updated for working with latest HTML5 and CSS3 content. For JSF development – and the evolution from JSF 1.x to 2.x – we may optionally choose to convert a project’s JSP/JSPX content to Facelets.
REST is an important term in the new features for this release. Toplink and ADF BC offer support for publishing RESTful services. Creating client proxies for RESTful services is supported as well: REST Support in Web Services design time: Service, Client generation from WADL, WADL structure view in HTTP Analyzer (WADL is for REST what WSDL is for SOAP based Web Services). And the creation of a Web Service Data Control on top of a RESTful service (with support for all REST operations).
New ADF components include the PanelDrawer:
and the PanelSpringboard:
Much improved Skin Editing. For example: easy customization of the most commonly skinned items. Includes sample page preview and preview in browser, allowing the developer to further debug skins using browser developer tools.
Improvements in Pivot Table are interesting:
- Split View mode
- Active Data support
- Attachment mode support
- Header sorting
- inlineStyle and styleClass API for DataCell and HeaderCell tags
Other DVT components are improved as well (already for 11gR1 PS6).
Pretty Urls: In this release, the ADF Controller state information is no longer included in the URL whenever possible.
The Bean Data Control – for use with JPA or with custom POJOs – is further improved – getting closer to the top dog in Data Controls (ADF BC) with these new features: scrolling and range paging as well as defining a wrapper class for data control implementation code. Declarative Lists of Values (LOV), Automatically call mergeEntity , Support CreateInsert and CreateWithParameters operations.
ADF Business Components is already pretty extensive and quite mature. It still evolves though. New is the Row Finder feature that provides users a declarative means of using a View Criteria on a View Object. A prominent use case of the Row Finder feature is to use a Row Finder object to find a row (or a set of rows) in a single subordinate detail table based on a row in a master table. However, this feature may be used more generally to link master tables to a set of one or more detail tables as well as to link tables to view criteria with bind variables.
Interestingly enough, the documentation explains at length how to deploy ADF 12c applications to GlassFish: http://docs.oracle.com/middleware/1212/adf/ADFFD/appendix_glassfish.htm#BABGBCJD.
WebLogic Server 12c (12.1.1 and 12.1.2) New Features
The new features in WebLogic Server can best be reviewed using two documents: first http://docs.oracle.com/cd/E24329_01/web.1211/e24494/toc.htm which is on overview of new WLS features in the first 12c release (12.1.1). Next in http://docs.oracle.com/middleware/1212/wls/NOTES/index.html#NOTES254 where the 12.1.2 new features are listed.
One of the best new features in WebLogic Server 12.1.2 in my mind is the support for WebSockets (http://docs.oracle.com/middleware/1212/wls/WLPRG/websockets_sse.htm#WLPRG853). I am sorry to see that one of my favorite features in ADF (Active Data Service) does not yet leverage the WLS WebSocket support as one of its transport options (http://docs.oracle.com/middleware/1212/adf/ADFFD/adv_ads.htm#BEIDHJFD). Interesting is the integration with and leveraging of Oracle Database 12c: http://docs.oracle.com/middleware/1212/wls/NOTES/index.html#CHDBJGFC. Application continuity is probably the most important feature in this area. Cool – though from an Admin perspective and not so much for developers – is the notion of Dynamic Clusters: the platform will realize its own scalability by starting up and release managed servers as the load dictates.
Toplink 12.1.2 (http://docs.oracle.com/middleware/1212/wls/NOTES/index.html#CJACADFC) is right up the alley of developers. Support for RESTful services on top of JPA entities to name but one feature. Also: NoSQL database support, allowing objects to be mapped to non-relational (NoSQL) data sources. And what was supposed to be part of the Java EE 7 specification (cloud support): Client isolation, where multiple application tenants may share database tables and schemas. This allows applications to manage entities for multiple tenants in the same application.
Very interesting are TopLink Live Data queries (“live queries”), where live queries track changes to the backing data store (http://docs.oracle.com/middleware/1212/toplink/TLADG/livedata.htm#CHDFDBJD); this feature leverages Oracle Database Query Result Change Notification (available from the 11g release of the database). This basically means that when the result set that the query produced changes in the database through DML operations from other sessions, the row set held in Java is automatically refreshed (using push through the Oracle JDBC driver). The Java application always looks at the latest state of the data. Note that ADF BC read only ViewObjects with auto refresh = true leverage the same mechanism and offer the same functionality. Also note that the push from database to middle tier does not mean the user will see the fresh data in the UI.
For WLS administrators: Using either the Configuration Wizard or WLST, you can create a new Managed Server by cloning an existing Managed Server. The cloned server inherits the attributes of the original server. This release of WebLogic Server contains the following new features for building and managing Oracle WebLogic Server applications using Apache Maven. This release of WebLogic Server introduces server templates. Server templates allow you to define common, non-default attributes that you can apply to different server instances. Because common attributes are contained in the server template, you only need to change them in one place and they take effect in all of the server instances that use the server template. The primary use case for server templates is for creating dynamic clusters. Coherence servers can still be independent of WebLogic, but they can also be administrated through the WLS administration console and framework.