Archive for June, 2009

A side by side comparison of Java and .Net acronyms

Often times, we jump from one platform to another while working on projects. This is a simple concise table which compares Java and .Net and explains the meanings of the various acronyms.

 

Java .NET Description
Java C#, VB.NET etc programming language.
Java virtual machine (JVM) Common Language runtime (CLR) JVM compiles bytecode into native executable instructions.
Java Enterprise Edition (JEE) ASP.NET, Sharepoint, WCF, etc., Enterprise web development.
Java FX Silverlight, WPF Rich applications
Java Development Kit (JDK) .Net framework multiple versions are supported.
Spring MVC, Struts 2 ASP.NET MVC, Spring.Net MVC MVC frameworks.
JSP pages ASPX pages pages that serve dynamic content form server.
web.xml web.config web application configuration files.
Eclipse based tools Visual Studio Team System IDE for development
Apache, Tomcat, JBoss, etc., IIS web server
Maven, Ant MSBuild, Nant Build frameworks
Junit Nunit unit testing frameworks

 

Please let me know if I missed any obvious ones or if you notice any incorrect comparisons.

Learning new programming language

This was my reply to a question posted on StackOverflow about learning new languages. You can find the question and more discussion at

http://stackoverflow.com/questions/1041687/learning-a-language-while-on-a-project

I would like to mention ALT.NET here

Self-organizing, ad-hoc community of developers bound by a desire to improve ourselves, challenge assumptions, and help each other pursue excellence in the practice of software development.

So in the spirit of ALT.NET, it is challenging but useful to reach out of your comfort zone to learn new languages. Some things that really helped me are as follows:

  1. Understand the history behind a language or script. Knowing evolution helps a lot.
  2. Pick the right book. Research StackOverflow and Amazon.com to find the right book to help you ease the growing pains.
  3. OOP is fairly common in most of the mature languages, so you can skip many of the chapters related to OOP in many books. Syntax learning will be a gradual process. I commonly bookmark some quick handy guides for that.
  4. Read as many community forums as possible to understand the common pitfalls of the new language.
  5. Attend some local meetups to interact with the community and share your pains.
  6. Take one pitch at a time by building small not so complicated applications and thereby gaining momentum.
  7. Make sure you create a reference frame for what you need to learn. Things like how security, logging, multithreading are handled.
  8. Be Open minded, you can be critical, but if you hate something then do not learn that language.

Finally, I think it is worthwhile to learn one strong languages like C# or Java, one functional language and one scripting language like ruby or python.

These things helped me tremendously and I think it will help all software engineers and architects to really gear for any development environment.