As the holiday approaches at the end of 2012, I find myself
amazed at how much I’ve seen and done this year, and I wonder what
everyone else sees and remembers in their own lives. I wonder
because when I look at everything I’ve seen and done this year, I
find myself aware of how much I’ve seen go by, and how I could
barely spare a moment, or passing nod of acknowledgement to most of
it.

From what I’ve seen, my thoughts and observations probably echo
those of others in the industry, but you better bust out those
Android skills because mobile is going to be big, really big. I
also don’t think most people have any real idea just “how BIG” it’s
really going to be.

As of February 2012, several trend researchers claimed mobile
phones accounted for 50% of new phone purchases in the US and you
might figure that makes sense, but also consider the fact that only
35% of people in the US own a smartphone! That means there are
somewhere over 200 million people in the US alone who have yet to
jump on the smartphone bandwagon; now try to imagine the world
population, clocking in at around 6.9 billion.

If these trends were consistent (which they are not, the US is one
of the countries with the highest smartphone adoption, at roughly
15th or 16th place, and India and China near 45th place with 6-8%
adoption,) if figures that there should be over five billion people
who have not made the jump to “mobile” yet. So how are we going to
be ready for this quickly advancing trend? Is the Java ecosystem
ready?

As if mobile weren’t enough, this comes on the heels of the
announcement of Google Fiber, which is going to be yet another
game-changer for the web-development market. We’ve seen a big swing
to client-side programming as of late, enabling mobile devices and
those with slower connections to enjoy a much more palatable
experience on the web. If I’m not mistaken, however, as broadband
internet penetration rises, we’ll see a resurgence of the
server-side architecture. I think we’ve learned from this iteration
of the client-side boom, but server-side programming is just
easier; and, if the bandwidth is there to support heavier
frameworks, people will use them.

So what have I been doing to prepare for these trends?

Personally, I’ve spent much of my time working on the Errai project, a client-side web
framework that compiles Java to JavaScript, and brings the power of
Java to the browser. Designed with these new trends in mind, Errai
leverages several Java EE technologies such as CDI (for dependency
injection,) JPA (for offline mode and local storage,) and JAX-RS,
for communicating with remote servers and other services.

I’ve never seen such a well-integrated web framework that balances
both the server and client side programming models so perfectly.
Write your code in Java, using the same APIs and techniques that
you’re used to from developing server-side apps, and you’ve got a
working client-side application that communicates with a server in
no time – you can even use the same code in both places. Five years
ago, JavaScript was more associated with warnings and errors than
as ubiquitous technology we see today, the movement is just getting
started; Errai is ready to ride this tidal wave with extreme
poise.

I’ve also been preparing for the advent of pervasive broadband
connections, by developing a high-performance Java HTTP
manipulation library for Servlet containers, called Rewrite – a rule-based HTTP
framework that puts a fresh spin on the Servlet programming model.
Rules can add/modify/or delete any part of the HTTP request and
response flowing in and out of a Servlet container, and at the same
time you are guided through established best practices and
techniques.

A speciality of Rewrite is its use to fix, or plug, holes in any
web framework. For instance: it can be used to provide mobile
browser detection; it can be used to secure URLs and validate HTTP
requests; its robust extensions can be used to invoke server-side
methods using CDI, Spring, or Java Reflection; it can be used to
provide HTML5 browser bookmarking support for rich client web-apps
such as those based on GWT, Errai, or javascript, and more.

In designing this technology, I wanted to be prepared for the
future, and whatever new technologies it may hold. We’re about to
see a big new release of Rewrite with Servlet output buffering
support (for those of you who might be familiar with the PHP output
buffer “ob_start()”, and dynamic file transformation so you can
write CSS with LESS, and the files will be compiled and cached for
you automatically – no more messy build steps to compile your LESS
to CSS.

As we move forward in technology over the next year. I think we’ll
see more of this unification, bringing programming models together
to ease the lives of developers. Of course we’ll see the rogue
framework pop up here and there, but in the end, unless they are
prepared to integrate with every other framework, and are prepared
to move forward with JavaScript, LESS, Mobile, and the REST, we’re
going to see a lot of the same frameworks that we’ve been seeing
for the last 2 years.

If there’s a tech that’s about to change the game, I’d place my
bets on Errai – or something like it, but until then, enjoy 2013.
I’ll be spending it putting polish on what I’ve already got,
because I think we’re going to see a lot of the same over the next
year while the mobile and broadband trends start up the foot of the
hill. This was a big year for us all, and next year will be the
time to prove it.

Lincoln Baxter, III is a Senior Software Engineer at Red Hat, working on JBoss open-source projects; most notably as project lead for JBoss Forge. This blog represents his personal thoughts and perspectives, not necessarily those of his employer.
He is a founder of OCPsoft, the author of PrettyFaces and Rewrite, the leading URL-rewriting extensions for Servlet, Java EE, and Java web frameworks; he is also the author of PrettyTime, social-style date and timestamp formatting for Java. When he is not swimming, running, or playing Ultimate Frisbee, Lincoln is focused on promoting open-source software and making web-applications more accessible for small businesses, individuals.