Introducing RestExpress: Instant, High-Performance, RESTful Services in Java

RestExpress is the easiest way to create RESTful web services in Java. An extremely Lightweight, Fast, REST Engine and API for Java. Supports JSON and XML serialization automagically as well as ISO 8601 date formats. A thin wrapper on Netty IO HTTP handling, RestExpress lets you create extremely scalable, stand-alone REST web services rapidly.

RestExpress is the easiest way to create RESTful web services in Java. An extremely Lightweight, Fast, REST Engine and API for Java. Supports JSON and XML serialization automagically as well as ISO 8601 date formats. A thin wrapper on Netty IO HTTP handling, RestExpress lets you create extremely scalable, stand-alone REST web services rapidly.

It takes 5 minutes to get your first services up and running using the kickstart application and we’ve seen 15,000+ requests per second and 10,000 simultaneous connections on a single desktop box. Try accomplishing that with the competition!

Inspired by Ruby on Rails and Sinatra, RestExpress is designed as a micro-framework with sub-projects, Syntaxe, RepoExpress and OAuthExpress to provide domain/DTO validation, MongoDB persistence storage and OAuth authentication simply and easily.

Check it out (literally) at www.GitHub.com!

Interoperable, Fast Enterprise Messaging

Over the last few weeks, I’ve had the opportunity to consider various messaging frameworks. Being I’m a “Java guy” my bias has been JMS, of course. There are several interesting open source options in that space. Of particular interest to me is Apache’s ActiveMQ. I’ve had good luck with it and enjoyed it’s performance even when compared to high-buck options like Fiorano and Tibco.

As of late, however, because I’m working in a largely C# shop, language support is a new and interesting consideration. Additionally, performance and scalability via commodity hardware is increasingly important. So I’ve been shopping around for options. Yes, ActiveMQ supports C# via the NMS client. But what other options are out there, perhaps in non-Java languages? Erlang, for instance, which offers some compelling scalability opportunities…

Here’s what I’m looking at currently, which might be of interest to you:

  • Apache’s QPid – An AMQP messaging platform.
  • Zyre – An interesting RESTful enterprise messaging approach
  • OpenAMQ – Claiming 590,000 messages per second on a single broker maching (130,000 mps per client)
  • ZeroMQ – An extremely fast C++ AMQP platform, claiming 2.8 (8 byte) messages per second.
  • RabbitMQ – an Erlang AMQP implementation.

Stay tuned….

Can Software Improve Over Time Through Refactoring?

As you know, the practice of refactoring is to account for software changing over time–presumably improving. Is that a myth? To some degree, I wager yes. Here’s why… and it’s not what you think.

Over the last few weeks, I’ve been involved in a fire drill to improve the reliability of enterprise messaging (via JMS) for a set of messages that transmit financial-related data within the organization I currently work. Said enterprise messaging library is approximately six years old and has had many features (as you can imagine) added to it over the years.

Upon initial inspection, it is quite clear that there is a significant amount of “Copy-n-Paste” coding involved in creating the additional features. Clue 1: Copy, paste, mutate does not constitute refactoring! Where’s the craftsmanship in that? Software quality, reliability, and readability degrades over time because software developers often just don’t give a damn. They lack pride, care, and craftsmanship. It’s as hard to find a good software person as it is to find a good doctor, mechanic, etc. Is that the company’s fault?

OK venting aside, I maintain software truly can improve over time. But as with anything (e.g. relationships, gardens, food, coffee), software requires tending. Software is never done so we need to be dilligent and deliberate with our changes. Companies need to account for total cost of ownership and allow time for refactoring to occur during the introduction of new features. Of course, that implies software developers have the inclination and skills to improve the software over time.

How is Spamming Beneficial?

I was just visiting the Portland Pattern Repository Wiki, which I read regularly but don’t contribute that often. Anyway, I made an attempt to update a page that I had contributed to before to find that security has now been enforced on the wiki to avoid spammers and denial of service attacks.

Question for you… what do spammers gain by posting to a technology wiki–or any wiki or blog for that matter? Do people actually buy what they are selling from postings like that? Do they garner a good-enough reputation from spamming to gain name recognition and a constant stream of orders for their products? Same question for email spammers… do people actually buy that stuff? My wife, BTW, has no need for penal enlargement products, yet she gets a steady stream of “quality” offers for them.

Perhaps the masses are more stupid than I thought. Oh well, those spammers keep me in business implementing better and better information security systems and policies for my clients.

What are your thoughts?