Every java professionals have a set of tools on their arsenal in order to survive day to day office challenges. Over the years of being a java professional, I am pretty sure you must already have a list of software that you are comfortable to work with and can easily accomplish a given task. The tools I am presenting on this article are the one proven to get the job done efficiently.
Let’s take a look one real life scenario, you are required to edit an xml because of some ParseException problem, you might use xmlparser or notepad++ to accomplish this. Well some die hard programmer might argue, I don’t need additional software to do that, all I need is a notepad and that’s it I can easily debug that. All I could say is, “Yeah! Maybe you are efficient in using that notepad, but for me I better use xmlparse or I will die trying to figure out where is the missing closing tag”. The truth, is we might be having a different ways in accomplishing things but the most important thing to consider is how fast and how efficient you are in accomplishing your task. The more efficient and effective we are, the more we got recognized by our boss. Ideally, the more we got recognized the faster we will be promoted. Some might argue, that would not always be the case but <insert some bad office politics here>. Let’s leave office politics out of this discussion because I might end up writing a book instead.
Moving on, the following is the list of software that I have on my arsenal and proven to be useful. I want to share this to you so that you could compare it to your list. For those guys who are new in development, this document is will serve as a guide on selecting the software that you will be needing. Better take a look on these list and familiarize with it. I would like to emphasize that these are not tools only for java programmer nor its built in java but rather the following are the list of tools to become an effective java professional either you are doing development or administration.
I noticed that I got a huge traffic coming from reddit because somebody posted a link of this post there. To my surprise, the community is quite scary and unpleasant. As to the readers out there, as for your information, this entry becomes a viral content sometime around last year and got positive feedback from another java community. I remember back then i got a couple thousands unique visitors everyday for almost a month.
I am not sure what is the issue here as to my honest opinion these are the best tools which I have used for 12 years. We all used it as these are always recommended software wherever I go. For that 12 years working experience, I have never seen anybody uses IntelliJ, and other tools mentioned in Reddit. I have worked for 6 companies under multiple clients and below tools are popularly being used. And the use of windows environment as development machine is a META in corporate world whether we like it or not. Development machine are windows and server is linux/aix. There might be some interesting company that uses linux and other nix flavor as development machine but they are quite small and negligible.
And for the point of vim, it’s given to use that already. Of course, what you will gonna use if you are in linux box other than VIM. Crazy.
Anyway, I might be an old relic and my knowledge might be outdated but the fact that I am earning 5 digit monthly in USD, I am pretty confident on my below recommendation. They can bash this post in any way they want and they can even say I have terrible English, but it will always comes down in how much money you earn to prove a point.
I have been into multiple companies already for the course of my career, and I have this software wherever I go. This is my best alternative to notepad. I am using this software to edit xml, scripts, or simply just making notes. What I like on this software is that, every document that I open remains there even I close it. So no important notes are wasted because of some stupid microsoft problem. One more thing that I like on notepad++ is the compare plugin which is very useful in comparing codes.
Pros: Lightweight, has compare plugins, unix2dos conversion
Use for: Editing XML,scripts, or any codes
2. XML Marker
You might not be able to survive java development or administration if you don’t have any XML editor on your sleeve. The XML Marker is my software of choice because it is light-weight, simple and it gets the job done. With the navigation pane on the top left which we can navigate from top level to lowest level of elements makes it ideal in simplifying xml navigation. Once we click an element on the left side of element, the element or group is highlighted on the right pane. The bottom right pane show the contents of the group or element in tabular form. You better try this software out and you would understand why i fell in love with this tool the moment I downloaded it.
License: Trial Version available
Pros: Simple, easy to understand, easy to master
Cons: Need to buy
Use for: Editing XML, Schema, JSON
3. SQL Developer
This is a must have on your software arsenal. Definitely one way or another, you need to connect to a database and issue sql statements. This tool might not have some fancy functionality like Toad but it gets the job done and its free. Always remember that in selecting a software to use, its not a general rule to select base on the available functionality but rather you must select which one can make you a better professional.
Pros: Can get the job done, from Oracle, java based, no need install just unzip it, available on multiple platform
Cons: Requires JDK
Use for: Database development and Management
Not for everyday use but it’s always a nice to have JAD sitting on your PC ready when needed. As a quick background, Jad is use for decompiling java class. Well definitely not everyday you will need to decompile something. Based on my experience if I can’t figure out something, I would just fire jad commands and read the codes in plain text. It might be a little advance but this is how i do things. There is always a case that you will need to use a jar file that lacks documentation or somebody messed up in keeping the source code in inventory. I know, this will rarely happen but I tell you it is happening. I have decompiled a full Backoffice system before because I have to provide a patch and yet the source is nowhere to be found because the original vendor no longer around. That’s where i used JAD and got accustomed to it. For simplicity i will be showing the GUI version of jad instead of the core version.
Pros: simple, zip installation, support multiple platform
Use for: Decompiling java class file
Who doesn’t love eclipse? Well some hardcore developer might answer “I don’t use that, notepad is the best”. All i can say is, “Ok use your notepad, I better use eclipse or else I might go crazy finding the missing closing tag”. I love eclipse, the navigation is so simple. There’s a lot of functionality is there, but i only used it for basic stuff. Some way back when I am still starting to learn java, I was hooked in using Netbeans. Sadly i bought a new laptop just to handle the resource hungry Netbeans. And the funny thing is, in corporate world there are no company using Netbeans rather Eclipse is a preferred choice as java IDE.
Pros: zip installation, support multiple platform, light weight
Cons: A lot of functionality available which you won’t be needing.
Use for: IDE for Java development
A lot of people doesn’t know this piece of tool sitting on each and everyone’s machine. Yes, it is part of JDK. This is used for generating certificates and keystore. You must be having a challenging working environment if you are using this tool actively since it’s rarely being used not unless the environment that you are handling enterprise level applications.
Use for: Key and Certificate Management Tool
Well my list will not be complete if I will not mention OpenSSL. It is a cryptography toolkit implementing the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) network protocols and related cryptography standards required by them. This is my weapon of choice when I am inside a unix box but I rather use keytool if I am on my windows machine.
Use for: Key and Certificate Management Tool
You want to show something cool to your boss in debugging java performance problem? Use JConsole in tracing out performance metrics of a java program. Its a very nice tool to have and gives a complete profile on how well and how bad a java program runs. Do you know where to download it? Its right sitting on your JDK installation. Please be aware that for some out of the box java programs like TIBCO, there are settings to enable first on the application tra before the jconsole would be able to analyze your java application.
Use for: Java Program Profiling
9 . Putty
My long time favorite of all the ssh tools available. Modern ssh tools might be offering a lot of features but nothing beats the simplicity and effectiveness of Putty. For every company that I joined in, they have different tools for SSH connectivity, but I always prefer putty over those tools. How about you?
License: Free, Open source
Pros: simple, no installation required
Use for: PuTTY is an SSH and telnet client
For x-window access, my weapon of choice is x-ming. Easy to use not unlike its expensive counterparts that has a lot of functionality and makes it very confusing like for example HummingBird Exceed. The exceed is high in features but its hard to understand not unlike X-ming wherein the setup is straightforward.
License: Free, Open source
Pros: simple and efficient
Cons: requires installation
Use for: x-window for windows
11-12 Reserved for readers suggestion, please leave a comment if you can recommend a useful tool to be included on my list.