Saturday, October 24, 2009

Tools for an efficient development environment

In this post you will find a list of the most common tools and apps I use for software development with a brief description of each.

In the next posts I will describe in more detail some of these tools, especially those that I believe are not that well known. Obviously I am not saying that the tools listed below are perfect for every developer or every situation, nor I am suggesting you should try it (i.e. don't sue me if one of these tools make you sick, kill your cat or something). I am just saying that, so far, they are helping me get the job done.

Lastly, note that each tool may have different licenses (GPL, LGPL, Apache etc) but all are (or have a version that is) "free-as-in-beer" when it comes to simple use.

Development

Eclipse IDE for Java EE Developers - Great editor (or Integrated Development Environment) for Java, JSPs, JSF etc. It used to require hundreds of 3rd-party plug-ins to be decent but since they began bundling it with parallel projects it became truly powerful and way more stable. The only plug-in I find myself installing on a clean instance of Eclipse these days is Subversive, a Subversion client.
Maven - Build manager system. I took some time to get used to Maven after years using Ant but there are just too many cool functions here to let it pass, like built-in online dependencies download, archetypes and hundreds of great plug-ins.
Subversion - SVN is a CVS-like source code versioning and repository system. If you are working on a team of developers you need one of these. But even if you are working alone you need one too. :D
Jenkins (or its former incarnation Hudson) - Continuous integration web portal. Basically you take the time to set it up once and it will pay back in interest every time you have to run a build.
Nexus - This is a maven repository proxy. I will write more about this one in the next posts, but enough to say that if you use Maven you should not rely on the public Maven repositories out there, you need a maven repository proxy. Nexus has a free version and it is powerful and freaking easy to use.
Trac - Trac is a project management, task tracking and WIKI system. I just hoped Trac was based in Java - it is not hard to install it but I guess I'm getting spoiled with tools like Nexus and Hudson that you can install simply by dropping a WAR file in Tomcat's webapp folder. But once Trac is setup it shines - you can easily integrate it with many other tools like Hudson and Subversion.
SoapUI - Use this when you want to run functional tests on your web services. Just do not use it for high-volume performance tests.
JMeter - Use this for high-volume performance tests. I know, SoapUI and LoadUI look nicer and shinier (though I really hate LoadUI's funky UI) but pair JMeter with this and it will save you lots of headaches.

Note: Your development environment gets especially powerful and productive when you integrate tools like Subversion, Trac and Jenkins together to automate aspects like documentation, deployment and testing, and to streamline the communication in your development team.

General

Notepad++ - This is what I use to replace the Notepad application that comes with Windows.
7-Zip - High-performance archiver that also works with almost every format out there.
Agent Ransack - Replacement to the Search function that comes with Windows. I could not hate more that dog that shows up during searches, especially when it does not list files that I KNOW it should be listing (see here for more details on a Windows "feature" in the search function that causes it to not show files under certain conditions)!
WinMerge - Great to compare folders with hundreds of files, like when we want to compare two slightly different local copies of the same project.
FileZilla Client - Great SFTP client.
CCleaner - Remove junk from your disk so you get more available space... and while at it, also remove junk from the Windows' registry. Tip: you can make it even more powerful by dropping this file into CCleaner's path. This will add lots of options to CCleaner (all disabled by default). Just be careful not to set the "enhanced CCleaner" to remove something you might need later.
MyDefrag - Simple, powerful, configurable... best disk defragmenter out there. You can also use Defraggler for quick defrags and leave MyDefrag for big environment updates. Just make sure you don't use any defragger's in your SSD.
Paint.NET - Best free Paint replacement out there.

You can automate the installation of many of these tools with Ninite. This is a great tool that can save you time especially if you use / manage multiple computers and want similar tools in all of them. Go to the website, select the tools you want and download the executable file. Then, anywhere you run this file it will silently install the tools you marked, no questions asked.

You can also use FileHippo Update Checker to keep most of these apps up to date. This app can quickly let you know about updates to most of your installed apps.

And lastly, if you are interested in many more great freeware tools you can find the best ones at the TechSupportAlert's website.


So, this is the initial list. In the next posts I will describe in more details few of these tools, including Hudson, Nexus and SoapUI, and concepts like Build Automation, Continuous Integration etc. If you like this list, a comment would definitely help motivate me to write more. If you find better tools that do about the same of one of the ones I listed, please drop a comment, I am always happy to learn a new trick.

No comments:

Post a Comment