Eclipse Authors: Pat Romanski, Elizabeth White, Liz McMillan, David H Deans, JP Morgenthal

Related Topics: Eclipse, Weblogic

Eclipse: Article

Simplifying Development with Eclipse

Take the drudgery out of it!

Every IDE will allow you to manage files and build projects. Eclipse goes beyond that by dealing with the code you are writing on a more intimate level than the typical file-centric view embraced by most IDEs. As a developer, you can use that familiarity to your advantage by letting Eclipse do the drudgework of finding, changing, switching, moving, waiting, and just a little bit of writing.

With Eclipse on your tool belt, you can focus yourself on the real task at hand: writing code that does what it's supposed to.

Start with the UI
Let's first note this article refers to the new Eclipse 3, which differs in some respects from older 2.1 builds, as well as WSAD and RAD.

Eclipse looks very similar to most other IDEs because the basic user interface has become so familiar to developers everywhere--except those who still hack away with Emacs or vi, although they too will find something to love in Eclipse, which can support either of those keybindings.

The basic Eclipse UI is shown in Figure 1. On the left of the screen, you'll see a list of development Resources: source code, jars, and other ingredients used to bake your latest development project. In fact, the list is separated into the different Projects that you are currently working on, which can depend on each other or be completely separate.

Eclipse keeps data about the projects in two files, called .project and .classpath. The .project file keeps information about what files are included in the project, how to use them, how to build the project, and many more details. The .classpath file can be found in any Java project, and tells Eclipse what to use as the CLASSPATH variable while building.

All of the current Projects exist in your current Workspace. A Workspace in Eclipse is a folder that contains lots of files, possibly including the Resources necessary for the Project. Eclipse starts with a default Workspace; however, you can easily set it to open multiple Workspaces. To open a different Workspace, just use the -data flag when you launch the executable; for example:

	eclipse.exe -data E:/shared/workspaces/artemis

In the middle is a source viewer, which will display the source code for the currently-open file. Notice that it is tabbed, so you can open many files at once. On the right is an outline of the currently-open file. Eclipse lists the classes, methods, and other parts of the file. Double-clicking an item will take you to it. Finally, on the bottom is another tabbed area that is used to convey information about what Eclipse has done, found, or has problems with. Note that each of these lower tabs are Views, which can be moved around as you like You can combine views into stacks by dragging them on top of each other. The information Views are all separate and can be pulled apart if you have a gigantic screen and want to see all of them at once.

Views are grouped into Perspectives, which are generally environment-oriented; there is a Java Perspective for working with Java projects, a Debug Perspective for tracking down runtime problems, a CVS Perspective for managing CVS connections, and many more. In fact, the number of Perspectives and Views is extensible, as is most every part of Eclipse. The IDE offers numerous ways to plug in and augment the existing functionality, which is taken advantage of by many in the Eclipse community.

Eclipse has Properties for all its Resources as well as its Projects. If you right-click on anything in the list at left, you can select "Properties" to view more detailed information. For files, you can see some basic information about the file itself, like modification dates, location, and permissions. For projects, more advanced options are available that allow you to set up the way that Eclipse will build that project.

If you click on "Java Build Path," you will see four tabs to control build behavior. The first is "Source," which lets you set up where Eclipse will look for source files, and specify which source files to use and which to ignore. The next tab is "Projects," which allows you to set what projects the current project depends on, so that you can set up some libraries or common code in one project and simply include it from other projects.

Speaking of "Libraries," the next tab is named just that and allows you to put JAR files, Libraries, and Class Folders onto the classpath. Finally, you can specify what resources are exported by this project, so that this project's properties will be applied to other projects that import this project.

Eclipse is built around the large source view in the middle, and that's where all of the editing occurs. But note a few things that Eclipse provides aside from the simple text view. First, there is a small trough on the left of the text that Eclipse will use to stash icons that communicate interesting information. A red "x" appears next to lines that Eclipse can't compile. A yellow "warning" street sign appears next to code when Eclipse finds something it thinks is probably wrong, like an unused import statement (as shown in Figure 1).

Second, the code in question can be underlined with an appropriate color. Again, red underlining indicates a compilation error, and yellow indicates a warning. Finally, to the right of the scrollbar, there is another small trough. Once again, colors are used to convey information: red blocks mark code areas with errors, and yellow blocks mark code areas with warnings. Clicking on a block will move the cursor directly to the code in question. Hovering over any of these three color-coded items (icons, underlines, or blocks-all of which are shown in Figure 1) will open a description of the related problem. Right-clicking will bring up a contextual menu.

Automatic Builds
One of the first things you will notice about using Eclipse for Java development is how smart it is about compiling. Go into the preferences (Window Menu > Preferences) and enable automatic building (Workbench > Build Automatically). Now, whenever you save a file, Eclipse will silently build that file and those that depend upon it. As a result, the next time you want to run your application, most of it is already saved and up-to-date. This can be a real timesaver when you are working on a large code base. The simplicity of this feature makes it one of the first things you'll miss if you're forced back onto some other IDE.

The underlying principal here is one that will surface over and over as you use Eclipse: the IDE understands the code. Eclipse is not just a compiler that can deal with the code and everything else on a file-centric basis. Rather, Eclipse has the smarts to look at the source and deal with it intelligently. Its smart compilation capability demonstrates that intelligence by its understanding of the dependencies expressed in the import statements.

Smart Searching
Eclipse has a very smart Search feature (Search Menu > Search), which allows you to search for occurrences of any string within a file, the entire project, or arbitrary groups of files. That's great, but it gets better. The Java Search (Search Menu > Java) allows you to limit the search to only find classes, methods, types, or other Java-savvy categories. Eclipse can find all of the method implementations that start with "set," and you can easily find all of your write accessors. Better yet, you can control-click on any method invocation to go to its implementation. Or control-click a class name to go to its implementation. To move the other way, you can right-click a method and find all places where it is used (References > Project). Eclipse's understanding of the code helps it navigate a large code base, and you reap the benefit.

"TODO" Task Link Creation
Eclipse can also remind you about tasks you still need to perform. Many developers add TODO comments into their code when they need to remember a specific task that has yet to be completed, or a certain case that needs to be handled. Eclipse once again draws on its knowledge of Java structure to find any comment that starts a line with TODO and marks it into a special View called Tasks (see it by opening Window Menu > Show View > Other > Basic > Tasks). In this way, Eclipse can provide a comprehensive list of all the tasks that still need to be performed.

Moreover, you can configure Eclipse to recognize other tags that you define. Open the Preferences (Window Menu > Preferences) and browse to the "Task Tags" page (Java > Task Tags). You can add new tags, remove the existing ones, set priorities for different tags, and specify a default for code that Eclipse writes for you.

Code Writing
You'll find that Eclipse can actually write code for you. Right-click a source file and look in the "Source" submenu. These are just a few of the ways that Eclipse can modify or extend your source code, taking a little of the boring work on itself to save you the effort. One of the most useful code writing capabilities is the "Generate Getters and Setters" option, which will scan a class for fields and generate appropriate accessor methods for those fields.

If you select it, a window will pop up to allow you to specify which fields you want accessors for, and which accessors you want (get, set, or both). You can also specify what access the generated methods will have (public, private, etc). Similarly, Eclipse can generate constructors based on the superclass, as well as methods to override or encapsulate superclass methods.

One of Eclipse's most powerful features is its robust support for refactoring. Highlight a method and right-click it, then look at the "Refactor" submenu. If you use this method to change a method name, Eclipse will locate all invocations of this method and change those invocations to use the new method name. You can also change the method signature by adding arguments and having Eclipse change all the existing calls to add that argument, using whatever value you specify. Additionally, you can remove arguments you've decided are unnecessary, or simply rearrange arguments to make the interface more consistent. Refactoring can also work on the class level, where you can pull internal classes into their own files, or move classes to other packages.

Robust Undo Support
Another wonderful feature is called the "Local History," which is a sort of super-simple local CVS repository. Every time you save a file, Eclipse will remember that save and allow you to revert back to it if needed. It remembers saves for the past seven days by default (this can be changed in Window Menu > Preferences > Workbench > Local History).

This can be a lifesaver when you tackle some new feature and end up breaking an unrelated feature. You can do a quick diff between the two versions and see what changes you've made, and you can undo your changes back to the previous version, or the version from yesterday. Better yet, you can revert only certain methods, and keep the changes in other methods.

JUnit Integration
Eclipse is also easy to use with the JUnit framework. If you have classes written to the JUnit standard, you can select the class in the Resources view at left and run the tests (Run Menu > Run As > JUnit Test). Eclipse will automatically find the defined test suite and run all the tests in it, using its own custom UI to display the tests run and the problems found. The familiar JUnit green line turns red if any of the tests fail, and Eclipse will show you the stack trace that generated the failure.

Let Eclipse Do It
So as you can see, Eclipse offers a host of features that make a developer's life easier by taking some of the drudgework and automating it. And because of the platform's architecture, there's a good chance that you can find a plugin that will help you with your specific task. If you can't find it, you can always use Eclipse to write it!

More Stories By Seth Roby

Seth Roby has spent his time at Parasoft training representatives from Fortune 500 companies in the Automated Error Prevention methodology. In his role as a Professional Services Engineer, he has written white papers about the process of testing, the infrastructure necessary to ensure quality code, and many other subjects. He has also written and taught courses on Unit Testing practices, with a focus on Java and JUnit. He lives with his wife Sonja in Costa Mesa, CA.

Comments (1)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.

IoT & Smart Cities Stories
Nicolas Fierro is CEO of MIMIR Blockchain Solutions. He is a programmer, technologist, and operations dev who has worked with Ethereum and blockchain since 2014. His knowledge in blockchain dates to when he performed dev ops services to the Ethereum Foundation as one the privileged few developers to work with the original core team in Switzerland.
René Bostic is the Technical VP of the IBM Cloud Unit in North America. Enjoying her career with IBM during the modern millennial technological era, she is an expert in cloud computing, DevOps and emerging cloud technologies such as Blockchain. Her strengths and core competencies include a proven record of accomplishments in consensus building at all levels to assess, plan, and implement enterprise and cloud computing solutions. René is a member of the Society of Women Engineers (SWE) and a m...
Andrew Keys is Co-Founder of ConsenSys Enterprise. He comes to ConsenSys Enterprise with capital markets, technology and entrepreneurial experience. Previously, he worked for UBS investment bank in equities analysis. Later, he was responsible for the creation and distribution of life settlement products to hedge funds and investment banks. After, he co-founded a revenue cycle management company where he learned about Bitcoin and eventually Ethereal. Andrew's role at ConsenSys Enterprise is a mul...
Whenever a new technology hits the high points of hype, everyone starts talking about it like it will solve all their business problems. Blockchain is one of those technologies. According to Gartner's latest report on the hype cycle of emerging technologies, blockchain has just passed the peak of their hype cycle curve. If you read the news articles about it, one would think it has taken over the technology world. No disruptive technology is without its challenges and potential impediments t...
If a machine can invent, does this mean the end of the patent system as we know it? The patent system, both in the US and Europe, allows companies to protect their inventions and helps foster innovation. However, Artificial Intelligence (AI) could be set to disrupt the patent system as we know it. This talk will examine how AI may change the patent landscape in the years to come. Furthermore, ways in which companies can best protect their AI related inventions will be examined from both a US and...
In his general session at 19th Cloud Expo, Manish Dixit, VP of Product and Engineering at Dice, discussed how Dice leverages data insights and tools to help both tech professionals and recruiters better understand how skills relate to each other and which skills are in high demand using interactive visualizations and salary indicator tools to maximize earning potential. Manish Dixit is VP of Product and Engineering at Dice. As the leader of the Product, Engineering and Data Sciences team at D...
Bill Schmarzo, Tech Chair of "Big Data | Analytics" of upcoming CloudEXPO | DXWorldEXPO New York (November 12-13, 2018, New York City) today announced the outline and schedule of the track. "The track has been designed in experience/degree order," said Schmarzo. "So, that folks who attend the entire track can leave the conference with some of the skills necessary to get their work done when they get back to their offices. It actually ties back to some work that I'm doing at the University of San...
When talking IoT we often focus on the devices, the sensors, the hardware itself. The new smart appliances, the new smart or self-driving cars (which are amalgamations of many ‘things'). When we are looking at the world of IoT, we should take a step back, look at the big picture. What value are these devices providing. IoT is not about the devices, its about the data consumed and generated. The devices are tools, mechanisms, conduits. This paper discusses the considerations when dealing with the...
Bill Schmarzo, author of "Big Data: Understanding How Data Powers Big Business" and "Big Data MBA: Driving Business Strategies with Data Science," is responsible for setting the strategy and defining the Big Data service offerings and capabilities for EMC Global Services Big Data Practice. As the CTO for the Big Data Practice, he is responsible for working with organizations to help them identify where and how to start their big data journeys. He's written several white papers, is an avid blogge...
Dynatrace is an application performance management software company with products for the information technology departments and digital business owners of medium and large businesses. Building the Future of Monitoring with Artificial Intelligence. Today we can collect lots and lots of performance data. We build beautiful dashboards and even have fancy query languages to access and transform the data. Still performance data is a secret language only a couple of people understand. The more busine...