Exciting things happening in Coherence…

I hope everyone is attending/watching JavaOne 2014 tomorrow.   There’s a sneak preview of some cool next generation Coherence with Java 8 in the Java One Technical Keynote

Follow @JavaOneConf and @pinocchiocode to find out more…

Coherence Incubator 11.2.0 Released!

While we’re certainly excited about the latest Coherence 12.1.0 release for Coherence 12.1.2 (including the new JVisualVM Plug-In), we’re not leaving the Coherence 3.7.1 developers out!

As part of our continued support for the Coherence Community we recently released Coherence Incubator 11.2.0 (for Coherence 3.7.1).   For the most part it’s a patch release – a few defect fixes and an upgrade to use Coherence 3.7.1 patch 10, however there are some big improvements in the way we’ve been doing testing, especially for Push Replication, that of which now incorporates the improvements made in Oracle Tools 1.1.0.


Coherence Incubator 12.1.0 Released!

On the back of the Oracle Tools 1.1.0 release, today we released an update to Coherence Incubator – Version 12.1.0.   While the change history provides the low-level details, the exciting news is the introduction of the JVisualVM plugin for Oracle Coherence (supporting versions 3.5, 3.6, 3.7 and 12.1.2) – the details of which are available here.

If you are using Oracle Coherence, running Java Development Kit 7 and want to visualize what’s happening in your development environment, this plug-in is for you!   Forget JConsole – you need JVisualVM for Coherence.  It’s extremely easy to install and easy to use.  (btw: you’ve already got JVisualVM installed if you’re using JDK7)

More details about the plug-in installation is now available on the Oracle Coherence Blog.

As usual, comments, feedback, defect reports and feature requests are always welcome on the Coherence Incubator Project.

Project Page: https://java.net/projects/cohinc/
Issue Tracker: https://java.net/jira/browse/COHINC
Project Forums: https://java.net/projects/cohinc/forums

Oracle Tools 1.1.0 Released!

After some significant research and development we’ve finally released Oracle Tools 1.1.0.   While a seemingly minor update (without breaking anything), it contains some nice improvements over Oracle Tools 1.0.0.

While the Issue Tracker (JIRA)  and Change History outline all of the low-level details, in a nutshell we made the following improvements:

  1. Orphan Process Protection: We introduced the ability to ensure that spawned processes, including Java applications, can be prevented from becoming orphaned, should a starting (ie: parent) process terminate unexpectedly.   While most people seem to run Oracle Tools with in the context of Continuous Integration Systems (which typically prevent “orphan processes”), we found systems using Oracle Tools in a standalone mode may create orphan processes when they terminate carelessly.  Not anymore!  “Orphan Protection” is turned on by-default.   If you really want to “orphan” newly created applications, just turn if off with a call to the NativeJavaApplicationBuilder.setOrphanProtection(false) method.
  2. Remote Runnable and Callable Execution: Having the ability to communicate between the starting and client applications allowed us to introduce the ability to request the execution of arbitrary Java Callables (or Runnables) for Java-based Applications (including Oracle Coherence).   Essentially this means that you can do things like this:Future<T> future = someApplication.submit(Callable<T>); in your tests.Note: This works for both container-based, local and soon-to-be-released “remote” applications.
  3. Introduced the new Eventually class:  With the advent of remote execution we decided to refactor (and deprecate) the DeferredAssert class to make things easier to use.  eg:  Say you want to assert that a remote application eventually reaches a certain state, you can now do this:Eventually.assertThat(application, Callable<T>, Matcher<T>);This will attempt to execute the specified Callable against the provided Application, hoping to eventually have the result “match” the specified Hamcrest/JUnit Matcher.   How it retries / backs-off in order to “eventually” match is covered by the Ensured class.
  4. New Documentation for Oracle Tools for Coherence:  While we also added a bunch of new features for the Oracle Tools for Coherence module, we also added new tutorial-based documentation.   It’s all covered here.

Comments, suggestions, feedback and defect reports are always welcome!

Project Page:  https://java.net/projects/oracletools/
Issue Tracking: https://java.net/jira/browse/ORACLETOOLS
Forums: https://java.net/projects/oracletools/forums

Coherence Incubator 11 Released

It’s here!  Oracle Coherence Incubator Release 11 has now been finalized and made public.  Everyone can now pick up the official Maven builds from maven.java.net or via Maven Central.

Instead of repeating all of the goodies and release details again, I’ll simply refer you to take a look at my recent post.   However to save you some time, here are the important new links:

Coherence Incubator Project:

Coherence Community Source Code:

Release Documentation:

If you’re not using Apache Maven for dependency management, you can still download the signed artifacts manually, including the jars, javadoc and source from Maven Central (which is http://search.maven.org/) Simply search for: “coherence incubator“.

What about Coherence Incubator 10?
Over the next few days, weeks and months our plan is to retire Coherence Incubator 10.  During this time we will be encouraging everyone to move over to Coherence Incubator 11.   There are a lot of advantages to this (like being able to easily build it yourself).  

Importantly we’ve gone to great lengths to ensure that Coherence Incubator 11 is technically the same as Coherence Incubator 10 – if they aren’t that’s a defect – which we should be able to resolve.  Basically anyone that’s currently using Coherence Incubator 10 should be able to simply swap the jars (updating the versions of course) and carry on.  Of course there are a few differences, but this are scoped to where and how examples are run, together with new documentation.

As we’ve previously done with major releases,  the old site, documentation and downloads for Coherence Incubator 10 will still be available.  We’re not taking those away.   However all new work and defect fixes will only occur in Coherence Incubator 11+ (unless there’s some monumental pressure – and I mean monumental).


Where’s my Eclipse IDE gone? (into the Trash)

After using and I guess supporting the Eclipse IDE now for almost 10 years, it’s finally failed badly enough that I’ve dragged into the Trash.  Why?  The last straw was simply the irritating and annoying unstable editor scrolling performance on a variety of platforms.  It’s no longer worth it.

eg: Working on my notebook 11″ screen is fine.  Working on a 24″ screen is slow.  Working on a 30″ screen – scrolling just doesn’t work.   Of course the caveat here is that I’ve got white-space highlighting and line numbers turned on.  If I turn these features off it works fine.  However, I need and use these features everyday – hence it’s no longer a solution.

I tried a bunch of releases, patches, hacks, work-arounds and searched the code base.  However  there comes a point in time that trying to resolve the problem is far more painful than switching IDEs.

So I’ve switched.  I switched to JetBrains IntelliJ 11 (and 12).   It wasn’t easy and wasn’t exactly fun (after nearly 10 years on Eclipse there’s a lot of short-cuts to remember), but it’s worth it in terms of productivity.  (While I could use the Eclipse key-mappings, I have no intention on going back so I’m gradually learning the native IntelliJ ones).

Luckily all of my favorite plugins are supported, especially JIndent that I which I use routinely across around six different projects.

So… So long Eclipse.  You were once a great platform.  Now you’re slow, large and cumbersome (compared to other platforms out there).

PS: Buying a personal license of IntelliJ is so worth it!

Coherence Incubator 11 (coming to an open-source repository near you soon…)

As mentioned at the past few Oracle Coherence Special Interest Group (SIG) and Customer Advisory Board (CAB) meetings, we’ve been busily working away at opening up (open sourcing) the entire Oracle Coherence Incubator for the Coherence Community.   I’m very pleased to say that this work is now “almost” complete!

Note: I say “almost” complete simply because we’ve not yet made an official release from the source repositories, but as far as openness goes, the work is now done.

If you’ve been looking at or using the Oracle Coherence Incubator in the past, a lot of things are about to change organizationally.

1. All source code and documentation is now officially licensed under CDDL.

2. The entire project has been “Mavenized”.  ie: easy to build, release etc from source.

3. All source code and documentation is now publicly available on GitHub.  ie: easy to access for everyone.

4. The project is now officially hosted at java.net.  ie: it’s like Glassfish and other open-source Java projects.

5. The issue tracking system is also publicly available (also on java.net).

6. The project documentation is now part of the project source (as a maven site).

7. You can now officially contribute to the Incubator!  Instructions on “how” are in the project documentation

8. Releases will be available on http://maven.java.net (and Maven Central).  Snapshots are already available on http://maven.java.net.

While these are major structural changes to the project, the source packaging and classes remain the same.   ie:  Coherence Incubator 11 is simply Coherence Incubator 10, but cleaned up with a new home and licensing model.

Here are the important new links:

Coherence Incubator Project: http://cohinc.java.net

Coherence Community Source Code: https://github.com/coherence-community

Latest Documentation: http://coherence-community.github.com/coherence-incubator/11.0.1-SNAPSHOT/

What about Coherence Incubator 10?

Ultimately the plan is to retire Coherence Incubator 10 and encourage everyone to move over to Coherence Incubator 11.   There are a lot of advantages to this (like being able to easily build stuff yourself).

Technically they are the same (if they aren’t that’s a defect – which we can track openly!).  We’ve gone to great lengths to keep them in sync so that everyone that’s been using Coherence Incubator 10 should be able to simply swap the jars (updating the versions) and carry on.

Once we’ve made an official release of Coherence Incubator 11, we plan to retire Coherence Incubator 10.  The site and downloads will still be available.  We’re not taking that away.   However all new work and defect fixes will only occur in Coherence Incubator 11 (unless there’s some monumental pressure – and I mean monumental).

Currently Coherence Incubator 11 contains a rollup of all changes to Coherence Incubator 10.  ie: in terms of source code they are the same (or very close).

So if you’re using Coherence Incubator 10, take a look at Coherence Incubator 11.  Grab the snapshots from maven.java.net or build it yourself from GitHub.

What’s next?

There’s still a bit of documentation to move over from Coherence Incubator 10 site and into Coherence Incubator 11.  We’re hoping to have this completed in the next week or so.  After this we’ll start the process of making an official release.  Once this is complete, we’ll announce retirement plan for Coherence Incubator 10.

As you can guess by the time this has taken, this has been a massive effort.  While it may seem like it was a simple project restructuring  – eg: getting source, documentation ready, this has involved a tremendous amount of organizational and community consultation.  I’m happy to say we’re through this now.   I look forward to putting out some new releases with new functionality pretty soon.

JSR-107 Early Draft Released (after nearly 12 years)

It’s been in the works for a number of years, more than a decade, but finally we’re making some solid process moving the JCache Specification forward, hopefully for inclusion in Java EE 7.

Yesterday the JCP made the important step of posting the Early Draft specification and API for JSR107. See http://jcp.org/en/jsr/detail?id=107 for details.

While an enormous amount of progress was made last year and early this year (by many people – not so much me) the JSR was somewhat delayed while the legals were resolved, especially with respect to ensuring clean and clear IP for Java itself, the eventual JCache Providers and the community.   Thankfully this stage is complete and we can move forward.

Source Code
For those of you that don’t know, all of the artifact are hosted on GitHub at https://github.com/jsr107.

If you’d like to pick up builds, you can do so from the CloudBees continuous build infrastructure here: https://jsr107.ci.cloudbees.com

JSR 107 Resourcing
Now the the Early Draft is out, Greg Luck (Terracotta) and myself (now a co-spec lead) will be committing the majority of our time to get this finished, together with appropriate implementations and the Technology Compatibility Kit (TCK), should you wish to write your own implementation.   However these things don’t happen in isolation so it would be greatly appreciated if you can free up some time over the next few months to take a look.   Unfortunately if we fail to get feedback, we’ll be force to make stuff up and “move on”.   ie: We both want this JSR completed asap.

JCP 2.7 Process
The Early Draft Review has now started and it is scheduled to end on 22 November. During this process we’ll continue to work on answering questions, making required changes etc.  Once complete we’ll start the Public Draft (another 30 days of review) and during the last week, we’ll schedule an EC ballot.  Should everything go well we’ll complete the RI and TCK then seek final approval for the JSR.

For those of you attending the next Coherence SIG (in London), I’ll be there to give an update and talk about Coherence support.


— Brian

The Maven : Moving to Maven from Ant based builds

Lately I’ve been doing a bunch of Maven work. For most part I think the worst of it’s over, but for those of you that have not been through the process, perhaps this highly accurate video will prepare you for what you’re in for.

Coherence Incubator 10 Patch 2 Released

Just uploaded the latest fix patches for Coherence Incubator 10.  While mostly minor fixes, there’s also a few new additions, like the new @LiveObject annotation.  Check out the Coherence Incubator project pages for more details.  http://coherence.oracle.com/display/INC10