Micro Focus is now part of OpenText. Learn more >

You are here

You are here

4 open source development tools I can't live without

public://pictures/Tom Thompson. jpg.jpg
Tom Thompson Senior Technical Writer, Schenider-Electric

As a software developer, I accumulate the best programs and utilities I can find to make the job easier. Whether I'm writing a quick proof-of-concept app, building a custom network interface, or experimenting with an API (usually a RESTful one), I reach into my virtual toolkit for something to assist me. Today, many of my favorite tools are open source. They cost nothing, and if they're properly maintained by the open source community, their quality is equal to that of their commercial competitors.

Your choice of programming language determines what tools are at your disposal and to some extent dictates what's in your toolkit. What might be available to a Java coder often doesn't exist for aficionados of C# or Objective-C. Here's a short list of open source tools I rely on time and again to get the job done. Even better, my picks don't limit your choice of platform: Both Windows and Mac OS X versions are available.

1. Java

Yes, I classify Java as a tool, because the end result often dictates the choice of language brought to bear on the problem. Released in 1995, Java is one of the precursors of open source. With a 20-year pedigree, the language is versatile and robust. Because Java is an object-oriented programming language, I can use it to implement a sophisticated program design or to knock out a quick test program.

Over time, Java has accumulated valuable new classes that expedite programming, such as Map, List, and Iterator. Collections classes, such as Set and List, gather multiple elements into groups and provide search, sort, frequency, max, min, and other operations on them. Built-in Iterator support for these collections classes is the icing on the cake. Java isn't quite as portable as claimed, but it certainly lowers the bar if you expect to migrate a body of reliable, field-tested code to another platform in the future.

2. Eclipse

For writing Java code, Eclipse is my integrated development environment of choice because it's loaded with useful features for managing classes and source code. The compiler offers helpful hints to potential syntax problems as you type a line of code, and it can often correct errors due to missing header files (a nice feature to have when you make that first call to an unfamiliar Java API). The interactive source-level debugger is informative and has plenty of features for prodding the remains of a crashed program. There are also loads of plugins available that bring code quality, version control, and other capabilities to the integrated development environment (IDE).

My one gripe is that the user interface looks like it was designed by committee: There are too many variations on how to change project settings, and it can require a Google search to figure this out.

3. Apache HttpClient network stack

Most native mobile apps use the Internet to "phone home" to a database or service. They often rely on a custom network stack for this, because a browser-based connection would be slow, consume too many resources, and provide an attack surface for malicious code. To implement the custom connection between the app and the service back end, Apache's HttpClient provides a capable HTTP connectivity framework that can be used for this purpose.

HttpClient lets you readily construct the headers and bodies of HTTP requests and responses to support a private communications session. For example, you can easily set up an authenticated transaction using an Authorize header or grab the data in a Set-Cookie header to manage cookies. Curiously, while the Java Development Kit (JDK) has its own HTTP stack, it doesn't implement the PATCH method, while HttpClient does. PATCH is important because it lets you selectively update subsets of data with low network overhead, particularly if your service relies on the Open Data (OData) protocol.

4. RESTClient

Are you learning how to use a new service that uses a RESTful interface? Or do you need to test your own REST implementation? RESTClient is a Firefox extension with a simple user interface that lets you build an HTTP request's headers and body in a piecemeal fashion. You then fire off the crafted request to the target and RESTClient observes what comes back.

What's great about RESTClient is that it automatically configures the browser environment so that it supports cross-origin resource sharing (CORS). This means that you can conduct your transaction experiments directly within Firefox. You can do this without having to work around the CORS restriction by uploading test code to a server and then trying it from there. It usually takes only a few transactions in RESTClient to figure things out.

These tools are my personal favorites, but there are plenty of open source tools out there for writing and debugging code. Open source frameworks can help you implement almost anything, from GUIs to network stacks, and there are other tools for testing your creations. I've only scratched the surface with my preferred open source tools. What are your personal favorites?

Keep learning

Read more articles about: App Dev & TestingApp Dev