# Eclipse/Using Eclipse
### Purpose

This book is intended for Java Developers, but other developers may also find some sections useful.
The goal of this book to make the reader a better (Java) Programmer.
Intended Audience - (Java) developers, anyone interested in improving the way he/she programs.
Prerequisites - None

### Getting Started

As described in Eclipse website, Eclipse is an IDE for everything and nothing in particular. Eclipse core is a universal IDE (a general purpose development environment).

##### Downloading Eclipse

Eclipse doesn't come with the JRE. It is advisable that you download the latest JRE (Java Runtime Environment) from the Javasoft web site first.
After you have downloaded and installed the JRE, you may then download the Eclipse IDE. Another version of Eclipse is the EasyEclipse project. Its interface is about the same as Eclipse. You can download it instead from [easyeclipse.org]

##### Installing Eclipse

Installing Eclipse just involves unzipping the downloaded file into a directory. After unzipping the Eclipse IDE is ready to run.

##### Running Eclipse
### Windows

Eclipse can be run by executing the file startup.jar. If Java Environment (JAVA_HOME) variables are defined then Eclipse IDE will automatically detect the JRE and start running.

## Linux

After downloading, open the file eclipse.

##### Getting Help

Types of help available with eclipse:
* Online documentation
* Context sensitive help
* Hover help
* Active Help
Eclipse Help can be accessed using external browser http://localhost:<port>/<path_for_help_content> <port>. The values for these fields can be found in preferences.ini file. Eclipse uses a tomcat server for displaying help documentation.

##### Configuring Eclipse

* Tuning your JRE
(Use different workspaces for different JREs otherwise due to autobuild wrong .class files will get generated)

#### Using Eclipse
##### Workspace

Resource (projects, folders, files)
.metadata folder contains information about the workspace.
Keep different workspaces for different development projects (or different customers)
Bookmarks - A bookmark acts as a link to a particular line in a file.
Tasks - A task is created against each java error. Tasks can also be created as an reminder for some activities to be performed. Task contains priority and completion status. Tasks can also work as bookmarks.
* Running Multiple Instances of Eclipse at the same time
(See command line options)

##### Perspectives

You can create your own (customized) perspective using configurations.

#### Running Other Applications within Eclipse

* File Association (External Programs)
* Run (External Tools)
need a "how to"/tutorial for External Tools running a main class in one project while referencing a jar file elsewhere. ex. project DoesReallyNeatStuff creates output based on project SomeStuff. How does a project reference the other project using External Tools?

#### Java Development using Eclipse

* Writing Code - generate, edit and navigate Java code.
syntax highlighting, code completion, code assist, tasks and views.
* Debugging
* Team Work
* Improving Productivity - hooking into well defined plugin points
* Using Eclipse Code

##### Working in a Team
### Introduction

** Related Topics:** Java, Java Runtime Environment (JRE),SWT

#### Introduction to Eclipse

Eclipse Project is made available under the Eclipse Public License.
About Eclipse contains information about what is eclipse.org?
Eclipse Download
Eclipse Project FAQs
Eclipse Projects
Eclipse 3.0.1 Online Help
Eclipse Community

#### Eclipse Configuration Management

Preferences and Properties in the Eclipse Workbench UI

#### Eclipse Architecture

Notes on the Eclipse Plug-in Architecture

#### Eclipse Plug-In Programming

* PDE Does Plug-ins
* A First Look at Eclipse Plug-in development
* Naming Conventions
* Eclipse Platform API v3.2

#### Miscellaneous

Branding your application
* Eclipse - tool integration platform - open source
* Eclipse community - 1000s of developers - around 50 software companies
* Eclipse vision - new paradigm for development tools - platform centric - not tool centric - towards Universal IDE
* Eclipse Project - tools built independently - work together as integrated sets
* Eclipse Plug-ins - seamless integration - your imagination is the limited - 100 active Open Source Projects and vendors.

### Highlights

* Eclipse 3-in-1 - a Java development environment, a tool integration platform, and an open source community.
* Editor -anticipates your next move - code assist , think faster that you write use spell checker, refactoring - iterative process of improving your code Object Oriented approach, scrapbook - experiment with expressions, search tools,
debugger - breakpoints, display value of variable, hot code replace support - change your code while in debug mode, preference settings - tailor according to your needs yourself,
* General purpose - For both programming and non-programming development tasks
Java doc comments templates
integrated support for Ant, JUnit

#### Basic Concepts

* Developer's Toolset - (design) modelling tool, IDE, version control, word processor,
* Artifacts - architecture diagrams, code and user documentation
* Workspace is a directory where your projects are stored.
* Workbench consists of views, perspectives and editors.
* Views provide alternate way of navigation.
* Editors are associated with the file types. External editors can also be used with editors. OLE based editors integrates well with Eclipse.
* Perspectives are collection of views.

#### Eclipse Architecture

* Eclipse Platform
* SWT
* JFace
* GEF/GMF
* Workspace
* Workbench
* Help
* Team
* Debug
* Plug-In
* Extension Points
* Plug-In Development Environment (PDE)
* Platform Runtime

#### WorkBench Terminology

* Menu bar
* Tool bar
* Perspective
* Fast View bar
* Resource Navigator
* Properties View
* Message Area
* Text editor
* Outline view
* Bookmarks view
* Editor status area
* Tasks view -
predefined tags TODO, FIXME, XXX
* Stacked view
* Help View

#### Standard Widget Toolkit (SWT)

The SWT is a collection of APIs that allow writing GUIs (Graphical User Interfaces). The APIs are focused on providing tools to allow "widgets" (graphical controls such as checkboxes, edit controls, etc.) to be displayed and manipulated.

#### Related Projects

EMF - Eclipse Modelling Framework EMF is a modeling framework and code generation facility for building tools and other applications based on a structured data model. EMF allows a model described using Annotated Java, XML or modeling tools to be generated as executable Java code. The generated code allows the model structure to be inspected, and the model data to be queried, updated and persisted to external storage.

### Glossary
#### Accelerators(Key Board Shortcuts)

* Ctrl + F6 - switching between various editors.

#### How To's

* Creating Ant Build File.
** Create a simple project.
** Create a new file with .xml as extension
** Open Ant editor
** Write the Ant script
** Run As External Tools
* Creating a user defined Task Tag
** Select Tools > Preference
** Select Task Tag
** Add new Task Tag