Writing about technology, traveling, politics and more

Friday, October 16, 2009

IntelliJ IDEA goes open-source

As a long time Java fan and Java developer, I was excited to read this blog announcement this morning. IntelliJ IDEA goes open-source with its IntelliJ IDEA Community Edition.

I started using IntelliJ IDEA while at my first real job, Eternal Systems, Inc., back in 2002. At the time, IDEA was superb and much better than any other Java IDE (probably than any IDE). I have just started playing with the community edition (version 9.0-beta) and it seems that JetBrains has kept up the good work. If you are a Java developer, I highly recommend you test out this IDE. Have a look at this video for a quick glimpse.

While individuals will certainly benefit from this release, I think JetBrains will too. In particular, I believe that programming teachers will pick up this IDE as a recommended tool for their students who make their first steps in programming. With its constant and real-time code inspections, IDEA will be a great educational resource and students will not forget it after they graduate.

Sunday, October 11, 2009

Time for Android!

One of my main resolutions for after I would get done with my PhD thesis was to get deeper into the details of the architecture and the underlying mechanisms of Android. Now that my defense was completed successfully (with only a few minor improvements pending), I am ready for what I believe will be an exciting journey.

As a researcher in software engineering for context-aware systems, Android seems to be a unique opportunity. Here is what I believe makes the Android platform stand out from the rest of the mobile platforms:
  1. It is open. This is a huge difference from its main competition, particularly the iPhone. While the latter is an excellent platform, and probably the state-of-the-art in the current arena of smart-phone hardware, its future is a bit uncertain. As a closed platform, the iPhone might face great challenges in attracting developers and end-users when other platforms (like the Android) catch-up with it.
  2. Its architecture is well thought. With a layered structure that facilitates platform independence (i.e., the Linux kernel), powerful common libraries (e.g., realizing accelerated graphics and security protocols) and a runtime layer that allows development in Java (one of the most successful and widely mastered programming languages). With this, building for Android is a breeze and fun process!
  3. It features reusable and replaceable components. This means that anyone can develop applications that feature web-browser and map views (among others) without having to develop them. It also means that any developer is free to enter an open market and compete with others (including Google itself) on providing the best core applications, like a phone manager or contacts manager.
  4. It features an open market. While all registered applications must qualify a set of rules in order to be listed, these are much more relaxed and open in comparison to iPhone's market-place, which prohibits listing applications that compete with those from Apple.
  5. It provides good developer tools. The Android SDK is of free to download and use (as expected), while the developers can also benefit from a great deal of online resources.
  6. It is Google-backed. As the search giant is the core promoter in the Open Handset Alliance, the Android users can feel safe that the web-apps they are so accustomed to (like GMail, GCalendar, etc) will always be supported on their devices. Furthermore, building on their great legacy with organizing the world's information, the Android users can expect more innovative applications and functionality in their phones, assisting them to organize their own, mobile world.

I recommend the following three tutorials for anyone who needs to get a quick (but very intuitive) look into Android:

Part 1 of 3 - Architecture Overview

Part 2 of 3 - Application lifecycle

Part 3 of 3 - APIs

Update October 13, 2009: Just read this interesting post on Slashdot.