The Atmosphere Framework 2.0 released!

Cross-Framework and Cross-Browser Asynchronous Framework for Real Time Applications on the JVM

The Async-IO dev team are pleased to announce the release of The Atmosphere Framework 2.0! You can download it here

Besides all of the performance and cache memory improvements made between Atmosphere 1.0, version 2.0 comes with a host of improvements and new features. Probably the biggest improvement that our users will notice is much better memory usage under high load and improved WebSocket/fallbacks transport performance. This changes alone makes it worth upgrading!

Atmosphere 2.0: New Frontier

I/O Frameworks and Servers

Atmosphere can now be deployed with Nettophere, Play! Framework and Vert.x. Atmosphere 2.0 also support WebSockets on JBoss 7.2.x and Wildfly's newly Servlet Container Undertow. Apache Tomcat 5 to 8, Jetty 6 to 9.1, GlassFish 2 to 4, Resin 3 to 4, JBoss 5 to the upcoming Wildfly, WebLogic 10 and 12, WebSphere 7 and up all of them works OUT OF THE BOX. Atmosphere 2.0 always picks the best configuration available, transparently!

Scary number of Frameworks supported

Atmosphere 2.0 is natively supported in PrimeFaces, Wicket, Grails (in two favor!), Spring's Reactor, GWT, Jersey, Scalatra, Vaadin, RichFaces, Portal/Portal Java, Apache Tuscany, Apache Tapestry (coming soon) etc.

Atmosphere 2.0 also can be used with any Servlet based framework like RestEasy, Apache CFX, Apache Wink, framework like Akka, Cometd, Socket.IO, distributed solutions like Hazelcast, Redis, JGroups, JMS for extreme scaling!

Google 'Atmosphere + framework_name' for more information.

JSR 356: Java API for WebSocket

Atmosphere 2.0 natively jsr 356 and will use it when available. Current supported servers are GlassFish 4.x, Tomcat 8.0.0-RC3 and Jetty 9.1.0.Mx

JSR 339: Java API for RESTful Services (JAX-RS2)

JAX-RS2 ships with a new asynchronous API ... without support for WebSocket!! Atmosphere 2.0 transparently brings WebSocket to JAX-RS2 implementation like Jersey 2 and RestEasy 3

JavaScript Client: You have choice! Node.js included!!

Atmosphere 2.0 now ships with a pure Javascript Client, and with a JQuery Plug In. Our Javascript client also supports Node.js!!

JVM Client: wAsync: Android, Node.js and Atmosphere altogether!

Atmosphere 2.0 now ships with a new Java based Client called wAsync. Wasync supports Android, Node.jas and Atmosphere. As simple as

    Client client = ClientFactory.getDefault().newClient();
    RequestBuilder request = client.newRequestBuilder()
            .method(Request.METHOD.GET)
            .uri("http://async-io.org")
            .encoder(new Encoder<String, Reader>() {
                    ...
            })
            .decoder(new Decoder<String, Reader>() {
                 ...
            })
            .transport(WEBSOCKET)     // Try WebSocket
            .transport(LONG_POLLING); // Fallback to Long-Polling

    Socket socket = client.create();
    socket.on(new Function<Reader>() {
                            ...

    }).open(request.build()).fire("echo").fire("bong");
                

@Service Annotations: Use, create or inject your own annotation!!

Atmosphere 2.0 now offers several annotations to make the development cycle super simple. As easy as

    @Config
    @ManagedService(path = "/chat")
    public class Chat {
        @Ready
        public void onReady(final AtmosphereResource r) {
            logger.info("Browser {} connected.", r.uuid());
        }

        @Disconnect
        public void onDisconnect(AtmosphereResourceEvent event) {
            if (event.isCancelled()) {
                logger.info("Browser {} unexpectedly disconnected", event.getResource().uuid());
            } else if (event.isClosedByClient()) {
                logger.info("Browser {} closed the connection", event.getResource().uuid());
            }
        }

        @org.atmosphere.config.service.Message(encoders = {JacksonEncoder.class}, decoders = {JacksonDecoder.class})
        public Message onMessage(Message message) throws IOException {
            logger.info("{} just send {}", message.getAuthor(), message.getMessage());
            return message;
        }

    }
            

You can now delegate annotation processing to framework like Spring or Guice, and event creates your own annotations!

Many many more changes!!!

Improved BroadcasterCache, State Recovery after a network outage, Heart Beat Support for Proxy lover, GWT support completely re-written are amongst the new features. Hundreds and Hundreds of bugs fixed, new features, etc. Surf our Change logs

Several Samples: Pick the one you like to get started

Get started documentations. Many easy to use SSSSSSSaaammmples! are available as wel!!

Get it now!

The Atmosphere Framework 2.0.Stack contains the following components

  • runtime: server side components for Servlet based framework.
  • javascript: client side library for Atmosphere
  • wAsync: Java client side library for Atmosphere
  • NettoSphere: server side server running on top of the Netty Framework
  • VertoSphere: server side server running on top of the Vert.x Framework
  • Playtosphere: server side server running on top of the Play! Framework

Thanks to our Sponsors

A big thanks to the company sponsoring Atmosphere: All the Async.io.org's subscribers, Reverb, who significantly sponsored Atmosphere from 2011 to early 2013, and our friends at PrimeTek