Amazon DevCon – Bjorn Freeman-Benson
Introduction to Eclipse, Bjorn Freeman-Benson of Predictable Software. Member of the Eclipse board, and a Committer Representative.
Project has lots of users, some contributors, and a few who can make commits to the source code repository.
He worked at OTI (Object Technology International) putting together Eclipse, has written plug-ins, but has a different perspective because he is not a core author.
Quick outline: Intro, Neat Features, Futures.
Goal is for Eclipse to be a univeral tool platform. Anything at all, nothing in particular.”
Deliberate attempt to make money, in an open source way. Eclipse Foundation is not-for-profit. Most people on the project are paid by IBM, HP, Actuate, or other members. There’s a marketing side and an open source side to what they do.
Roots – Software is from people. Origins include ENVY/Smalltalk, Hoops, Visual Age for Java, Team/V (Smalltalk for Windows), Sniff, and Visual Age Micro Edition. IBM’ers talk about their plug-in architecture a lot, everyone has one, let’s talk about features instead.
Architecture – Runtime based on OSGI standard. UI (Generic Workshop + JFace + SWT). Extensible tools for search, help, debug. Java IDE atop all of that. Resources on the side. All can be plugged together to build other applications. People started to build things that were not IDEs. Then it was labeled as a rich client platform.
Goal – Completely open platform for application development tools. Rumor has it that it didn’t succeed even within IBM until it was open sourced. Handle unrestricted content types, be language neutral. HTML, Java, C, JSP, EJB, XML, GIF, etc. Seamless tool integration, a dream for the last 1.5 decades.
3 releases to date, each with an accompanying perception change:
3 – Eclipse is a general application
2 – Eclipse is a general tooling platform
1 – Eclipse is a Java IDE
JDT- Java Development Tooling. Build, launch, debug, edit code, extension points to hook in to build process.
Why Eclipse, why a GUI IDE, what is the essential core of Eclipse?
Why Eclipse? Beating the averages (Paul Graham, April 2001, avg.html). An IDE is not just a great text editor. Write more code is not the goal, writing a great product is.
Essential core? Internal model of system being developer, visually rich GUI. Attributed parse tree, incremental compiler. No build. No external cross reference. Semantically based code assist, true refactoring.
Lots of examples of use of internal knowledge of code. Show all references, uses, child classes. Find declarations, chase refs and defs. Type and call hierarchy; easy for IDE to display. Use nice icons and colors – denote abstract, protected, private, etc. Static call hierarchy, method calls, count number of callers, markall occurences of an identifier. Examples include all return statements in a method, all uses of an exception handler, all overridden methods of a class. Use automatic refactoring to create new classes, from original source.
Context-sensitive quickfixes. Create method that’s missing, check for awkward coding, rename method call.
Q: What release supports Java 1.5
A: Version 3.1 Milestone 4 supports Java 1.5.
Code critique system (a very dynamic form of lint), from originator and other places. Show up as errors or warnings in the Eclipse TODO list.
Easy navigation between property files and source code. Example: Jump between source and resources for a localized application.
Some Neat Features
JUnit integration — test driven development. Run tests, get errors, jump to source, run with debugger.
Ant debugger — to debug the build process.
Debugging stuff — run code with errors, code that doesn’t actually compile. Popups to inspect values. Logical structure display, show vector as array, hide the implementation details. Debugging live web services (extra plugin). Put breakpoint in servlet, step through from client into server, other threads on same server keep going. Do hot code replacement (using the JVM and the Java Debug API) on a running system. Sun JVM supports replacement of any method that is not running, as long as the class’s type signature is not changed.
Team development — Eclipse team scattered around, started using CVS as backing store, other companies added plugins for other source repositories. Eclipse hides some of CVS’s warts, still no directory-level management. Nice differencing browser, merging with conflict resolution. “Blame co-worker” feature, identifies who made the changes to any line of code.
Q: You talked about Java, what’s the parity level with the C IDE.
A: C is second most widely used. Debugger works well, doesn’t know about refactoring. Completion & highlighting are good, overall not quite as complete. About 1/2 of the Java features are in the C version.
Milestones — next release in June. Most of team is in Ottawa, they work hard in the winter, and take the summer off to go fishing. Team has fixed 1 bug/developer/day for 5 consecutive years, no exceptions. That’s 50-100 fixes per working day over that time. All is done using a public instance of BugZilla. Milestone releases every 6 weeks, they are good at hitting them.
3.1 Themes and Priorities:
Scaling up – Simplify getting started. Websphere project added 300 extensions, make sure that it handles these well. IBM pays for about 1/3 of development, they know they are building tools that have to scale for large-scale development.
Very large code base requires a 64-bit processor; Sun JVM has a 1.7GB limit and all of the data is resident.
Design for extensibility, richer API for JDT, better AST rewriting. Project working sets — active files only.
Make it simple to use, add a lot of keyboard control, many the same as emacs. Quick popup windows, inspectors, Control-T for type hierarchy.
Annual Conference at EclipseCon.org, Feb 28.
Q: Anyone building collaborative tools for bug tracking, code reviews, project stuff?
A: Scott Lewis in Portland doing some work here, people in Vancouver doing bug system integration.
Q: Other non-IDE applications out there?
A: Daimler-Chrysler has an inventory & document management tool for their factories, built using Eclipse plug-ins.
Q: Is there an email plugin?
A: Probably, haven’t seen it?
Q: Embedded shell?
A: Not as far as he knows.
Q: Embedded profiler?
A: Not in base download, a bunch of Russians created one (YorkIT?).
A: If you change lines of code you need to give back to public under same license you got it under
Q: How well does it work with the Jikes JVM?
A: Works fine, no problemat all.