February 27, 2005

  • Do you know Java?

    Object-oriented programming has been around for quite some time now.
    And Java is undeniably the language/platform most widely heard of, for
    the simple reason that even non-geeks eventually have to use the
    technology while browsing the web. In case you do not know already:
    most, if not all, of the social games offered by Yahoo! use Java.

    Because Java is so widely used, a lot of aspiring computer scientists
    or software engineers like to do a little something in Java so they can
    claim they know Java in their resumé. I believe it's really easy to
    tell if somebody really knows Java though, even if they write down Java
    as one of the programming languages they know. So here are things to
    keep in mind while writing anything related to Java in your resumé, so
    that you don't sound like you don't know what you are talking about:

    1. Java is not really just a programming language. It's a whole
      platform, consisting of 3 parts: the Java virtual machine, the Java
      language (syntax), and the Java API;
    2. In my opinion, the 3 parts ordered in decreasing importance are:
      the Java API, the Java virtual machine, and the Java language (syntax).
      1. You see, the power of the Java comes from the API (i.e. the
        huge collection of predefined classes, interfaces, and packages that
        accompany each version of the Java platform). If you don't know how to
        use the API effectively, there is no point in knowing the language
        syntax because otherwise you would probably end up reinventing many
        many many wheels (stuff already in the API).
      2. Second in importance to the API is the virtual machine. The
        problem comes from the fact that the Java virtual machine exists for
        many different platforms (Windows 32-bit, Linux, Mac OS, cellphones)
        and each implementation has its quirks and bugs. Once you have adapted
        your Java code to work on one platform, you may find the same code broken on another
        platform. So please remember this: "Write once, debug everywhere."
      3. Now you see how insignificant the Java language syntax is, compared to the API and the virtual machine.
    3. This may sound rude to some people: the decision makers in the
      development and evolution of the Java platform are, ironically, quite
      undecided. They "like" to make changes from one minor version to
      another and some of these changes are either irritating or annoying
      (like the addition of typesafe enum only
      in version 1.5.0). Therefore, unless you are an important and longtime
      contributor to the development and evolution of the Java platform,
      chances are that you don't know Java; at best, you know some version(s) of Java.

    Given the above, the two general rules are:

    1. If possible, don't write Java in the "Programming Languages"
      section. Mention it as a "Development Platform" instead. There is a big
      difference between knowing the development platform and knowing just
      the language syntax;
    2. Always state which version of Java you know (e.g. write "J2SE 1.4.2" instead of "Java").

    Now, some of you probably have noticed that Java is listed among
    my expertise on the left side of the blog. Why have I not included a
    version number as I encourage you to? The truth is: I really don't know
    Java that well. I have just started working with J2SE 1.4.2 and I still
    can't tell the difference between this version and, say, 1.4.1. At
    best, I know the syntax.

    - SwordAngel