August 31, 2007

New Trends in Programming

Here are a few technologies that are making a Buzz on the web, and every tech-blog is beginning to talk about them. These are just brief introductions to those non-Microsoft technologies that I'm excited about. Now, I am one in the crowd to experiment and tell the world.

GridGain provides computational grid platform for Java that is fun, simple and productive to use. As you would expect, it is open source and professionally supported. It's ideal for performing parallelizable tasks (i.e. Split the work, calculate, and aggregate the results). GridGain now supports integration with Jboss, Spring, AspectJ, Weblogic, Websphere, and many more... You can find good documentation and a quick demo at its homepage.

Erlang is a concurrent functional programming language designed at the Ericsson Computer Science Laboratory. Erlang processes are very lightweight (lighter than threads) and the system can support several thousands of processes.

Unlike most languages that use shared state concurrency, Erlang uses pure message passing concurrency. Thus, making things scalable and fault-tolerant is relatively easy. If this interests you, read the fine analysis of Erlang by Hendy Irawan. Here is an excerpt...

Erlang is built on the ideas of
  • Share nothing : Process cannot share data in any way. Actually, this is not 100% true; there are some small exceptions.
  • Pure message passing : Copy all data you need in the messages, no dangling pointers.
  • Crash detection and recovery : Things will crash, so the best thing to do is let them crash and recover afterwards.

Google Gears is an open source browser extension that enables web applications to provide offline functionality. It provides Javascript hooks that will interface with a few locally running services such as Cache, Database, and asynchronous Thread pool. If you are a user of Google-Reader, you might have noticed the Offline support... This is made possible only with the help of Gears plugin on our browser.

This effort from Google is what lays the foundation, and gives fullness to the concept of Web O.S. As a developer, you’ll be able to make an application with the assurance that it will work offline and online across browsers. Check out the Google Gears API Developer's guide for tutorials. The version 0.2 release of Google Gears will support Cross Origin API, and will be a huge treat for Web application developers.

Java DB is Sun's supported distribution of the open source Apache Derby 100% Java technology database. Amongst the many changes in Java 6(u2), Sun introduces Java DB as a part of its SDK. This is great news for Java lovers who are looking for a light-weight database. I'm thrilled!

Interestingly, we can use it within browser, Web-2.0 applications for easy distribution, one-click install, secure local data storage, and data persistence if the Internet connection is lost or for use off-line. Further, it is easy to migrate an application using Java DB to other open standard databases.

Groovy provides powerful features of a dynamic language, and proves to be a handy tool to Unit test Java applications. It offers a syntax similar to Java, supports Java libraries, and compiles to Java Byte Code. So, calling of methods between the two languages can be interoperable. Groovy can serve as a good alternative to Perl and Ruby.

Scala is a general purpose programming language designed to express common programming patterns in a concise, elegant, and type-safe way. It smoothly integrates features of object-oriented and functional languages. It is also fully interoperable with Java. Check out the beginner's guide for getting started.

4 Comments:

Hendy said...

Thank you for linking to my blog :)

I have to discredit myself though... it's not my fine analysis, actually it's, quite literally, Joe Armstrong's :-) [the creator of Erlang]

It's a good trend... We'll see why together. :)

(I've just started reading Programming Erlang last night and it does feel good!!)

Anonymous said...

What difference does it make if it's Microsoft or not? I'm lost...

Cid Rodrigues de Andrade said...

Excelent. I post a portuguese comment at http://blog.cidandrade.pro.br/programming/novas-tendencias-em-programacao/

Anonymous said...

I have some concerns about Groovy... it's a great idea, but it still has some annoying bugs (the impression is nobody using for real purposes), not to mention the slowness.
When I wrote the Java version of the Norvig spell corrector (http://www.raelcunha.com/spell-correct.php), I wrote a Groovy version (but not published online). I found some bugs, some lack of consistence, and the Groovy version was 10x more slow than the Java version... sad...