What is Horizon?

Certain design ideas and indeed some code has been borrowed from JBoss Cache 3.x, however JBoss Cache is in no way a dependency. Horizon is a complete, separate and standalone project. Some may consider this a fork, but the people behind Horizon and JBoss Cache see it as an evolution, since all future effort will be on Horizon and not JBoss Cache.

Why not just call it JBoss Cache 4.x?

Several reasons. Binary and even API compatibility with older JBoss Cache releases is no longer maintained, and the new API is simpler and easier to use. Also, the internal data structure used is not compatible with JBoss Cache.

Does Horizon need an application server to run?

No. All that is needed is a Java 5.0-compatible JVM.

What will happen to JBoss Cache? And POJO Cache?

The current release of JBoss Cache, 3.0.3 and soon to be 3.1.0, is considered stable enough. No new features will be added to JBoss Cache or POJO Cache, although critical fixes will still be addressed. Consider both JBoss Cache and POJO Cache to be in maintenance mode.

Will there be a POJO Cache replacement in Horizon?

Yes. A fine-grained API is on the Infinispan Roadmap, currently scheduled for Horizon 5.0.0. Notably, this fine-grained API will not use bytecode weaving and AOP like POJO Cache did, and instead will use a much more robust and powerful session-based design. See this page for more details on this.

How come Horizon's first release is 4.0.0? This sounds weird!

We didn't want to release Horizon as a 1.0, as in all fairness it is not a virgin codebase. A lot of the code, designs and ideas in Horizon are from JBoss Cache, and has been tried and tested, proven in high stress environments. Horizon should thus be viewed as a mature and stable platform and not a new, experimental one.

What should I use, JBoss Cache or Horizon?

If you are starting a new project, by all means use Horizon. If you already use JBoss Cache, consider upgrading to Horizon as this is where most of our focus and efforts will be. There is a compatibility layer to help people migrate, although we recommend only using this if you (a) absolutely need a tree structure, or (b) only for a short time as a stepping stone. You will find that Horizon's Map based API performs much better. In addition, we plan to provide migration guides and configuration conversion tools.

Where can I get more information on Horizon?

The Horizon project page is your best place to start things off, whether you are interested in using Horizon in your work or are interested in collaborating on and contributing to Horizon.

JSR 107 is not complete, but Horizon's primary API is as close as possible to JSR 107's javax.cache.Cache interface. The goal is once JSR 107 is complete, the org.horizon.Cache interface would extend javax.cache.Cache. The key thing to note is that just like javax.cache.Cache, org.horizon.Cache extends java.util.concurrent.ConcurrentMap which would make migration between JSR 107 compliant data structures simple.

Does Horizon have any representation on JSR 107?

Yes. Manik Surtani, who is project lead on Horizon, is on the JSR 107 expert group.

Can I use Horizon with Hibernate?

Soon, yes. We will provide a Hibernate second-level cache plugin for Hibernate using Horizon. If you wish to track the progress of this, or even volunteer to build this plugin, the JIRA is HORIZON-38.