//////////////////////////////////////////
* Copyright (c) 2015 Eclipse Foundation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*    Wayne Beaton (Eclipse Foundation)- initial API and implementation
//////////////////////////////////////////

Mars New and Noteworthy
-----------------------

Here are some of the noteworthy features in Eclipse Mars.

[[java]]
Java(TM)
~~~~~~~~

Eclipse Mars includes numerous bug fixes and improvements in the Java 9
support, along with a lot of other useful features.

Add and Remove Parentheses Quick Assist
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Use this *Quick Assist* (Ctrl+1) to add or remove optional 
parentheses around lambda parameters.

image::images/add-remove-parentheses-around-lambda-parameter.png[]

Add Inferred Types Quick Assist
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This Quick Assist (Ctrl+1) will make inferred types of the parameters explicit
in a lambda expression.

image::images/infer-lambda-parameter-types.png[]

Convert From Method Reference to Lambda expression Quick Assist
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This Quick Assist (Ctrl+1) converts a method reference to a lambda expression.

image::images/convert-to-lambda.png[]

In cases where it is possible, it can be used to convert a lambda expression
into a method reference.

image::images/convert-to-method-reference.png[]

New Java editor templates
^^^^^^^^^^^^^^^^^^^^^^^^^
New templates (try_finally, finally, lock) have been added to insert 
commonly occurring patters in concurrent programming:

image::images/new-java-editor-templates.png[]

Recommendations Engine Enabled by Default
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The recommendations engine, which provides content assistance based on common 
usage patterns is now turned on by default, and features new subtype aware 
constructor and types completion.

image::images/call-completion-narrow.png[]

The code recommendations engine bases content assist recommendations on 
common API usage patterns expressed in other code bases.

Constructor Completion
^^^^^^^^^^^^^^^^^^^^^^
The Constructor Completion engine provides you with recommendations for 
constructors that you are likely to use to instantiate objects of a 
particular type.

image::images/constructor-completion.png[]

Override Completion
^^^^^^^^^^^^^^^^^^^
The Override Completion engine provides you with recommendations which 
methods you are most likely to override when triggering code completion 
in the body of class.

image::images/overrides-completion.png[]

More precise flow analysis
^^^^^^^^^^^^^^^^^^^^^^^^^^
Flow analysis, as performed by the compiler to warn the user about 
potential programming problems, has been made smarter. Some examples are:
Leverage knowledge that auto-boxing always produces a non-+null+ value.
Leverage knowledge that certain compiler-generated methods--like 
+valueOf()+ and +values()+ on enum types--provide non-+null+ values.
Various improvements in resource leak analysis.

Improved flow analysis for loops
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Flow analysis has been improved to more precisely capture the flow of 
+null+ values in loops. This mainly achieves a reduction of false 
positive reports from null analysis.

image::images/loop-flows.png[]

Previously, example method "test1" would raise a potential +null+ pointer 
warning at point (3). To correct this issue the merging of information 
leading towards point (3) has been improved to correctly see that the 
+null+ value from point (1) can never reach point (3).

In example method "test2" JDT previously reported a redundant +null+ check 
at (3), because analysis didn't see that the assignment directly above 
could indeed assign a non-+null+ value.

In example method "test3" it was reported that "o can only be +null+" at 
(3), because the information from the two +null+-assignments wrongly 
overruled the one assignment from non-+null+. With improved analysis 
this is now softened to saying "o may be +null+".

The graph on the right hand side illustrates the new composition of 
flow information: for each relevant point (3) inside a loop, the analysis 
first merges the flows that lead into (1). This result is concatenated 
with the partial flow (b.c), which leads from the loop start to point 
(3). Improved precision has thus been achieved within the design limits 
of a single AST traversal in order to minimize impact on compiler performance.

Show skipped tests only in JUnit view
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The JUnit view now has a filter to show only the skipped 
(ignored or assumption failed) tests:

image::images/junit-view-filter-to-show-skipped-tests-only.png[]

Re-run parameterized JUnit tests
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The JUnit view now allows you to re-run groups of parameterized 
tests, or actually any kind of tests that are run by a specialized 
runner and add another level of grouping in the *JUnit* view.

image::images/junit-rerun-parameterized.png[]

Shortcut for Skip All Breakpoints
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
A key binding (Ctrl+Alt+B) has been added as the shortcut for *Skip All Breakpoints*.

image::images/skip-all-breakpoints.png[]

Add Watchpoint for final variables
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
You can now add a watchpoint for non-constant final variables:

image::images/final-watchpoint.png[]

NOTE: This cannot be implemented for final variables with compile-time 
constant values because Java compiles the constant value into class 
files and leaves no trace of a field access at points where the 
final field is read.

Assigning stdin to a file
^^^^^^^^^^^^^^^^^^^^^^^^^
Stdin can now be assigned to a file in the *Common* tab of launch configuration dialogs.

image::images/stdin-file.png[]

Word wrap in the Console
^^^^^^^^^^^^^^^^^^^^^^^^
A new formatting option has been contributed to the Console view for all 
I/O consoles: Word Wrap.

The new option is available on the *Console* view toolbar and in the 
content popup menu within the *Console* view.

image::images/word-wrap.png[]

Improved compiler performance
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Significant performance improvements have been made to the Java 
compiler on generics-heavy code.

Unused exception parameters
^^^^^^^^^^^^^^^^^^^^^^^^^^^
A new compiler option to report unused exception parameters in try-catch 
statements has been added. The option is set to Ignore by default.

image::images/unused-exception.png[]

External annotations
^^^^^^^^^^^^^^^^^^^^
Annotation-based null analysis can now leverage externally defined 
annotations that are attached to a library.

Previously, annotation-based null analysis was significantly limited 
by the fact that many 3rd party libraries have no +null+ annotations 
in their API. This implied that any errors caused at this interface 
could not be detected by the analysis, and even worse, implementors 
of library-defined interfaces could not use any intended contracts, 
because any +null+ annotations in overriding methods were flagged as 
incompatible with the super version.

JDT now supports the concept of "external annotations". A user can 
specify +null+ annotations in separate files and attach these to a 
given library. The compiler will take external +null+ annotations into 
consideration for its null analysis.

image::images/external-annotation-configuration.png[]

External annotations can be provided as a directory tree of individual 
text files or as a zip file. External annotations can be attached to a 
JRE (per workspace) and to arbitrary libraries (per project).

More https://wiki.eclipse.org/JDT_Core/Null_Analysis/External_Annotations[information].

Annotate Command
^^^^^^^^^^^^^^^^
A new command Annotate is provided when browsing attached source 
code of a library using the class file editor. Two pre-requisites 
must be met for using this command:

* The project is configured to use annotation-based null analysis.
* An existing workspace folder has been specified as the external 
annotation location for a given library.

Users may select any type in the signature of a library method or
field, and invoke *Annotate*: either using the context menu, or by 
pressing Ctrl+1. Proposals will be offered for marking the selected 
type as +@NonNull+ or +@Nullable+. All method parameters, return types 
and field types can be annotated. Additionally when Java 8 is 
used, details like type arguments and type bounds etc. can be 
annotated.

image::images/annotate-map-return.png[]

After selecting a proposal, the compiler will immediately leverage the new annotation for its null analysis.

image::images/map-get-error.png[]

Java 9 Beta
^^^^^^^^^^^
Java(TM) 9 support has not yet landed in our standard download packages.
But you can add an early access preview to your existing Eclipse Mars install.

The Eclipse Java(TM) 9 Support (BETA) contains the following:

* ability to add JRE and JDK 9 as installed JRE
* support for JavaSE-1.9 execution environment
* ability to create Java and Plug-in projects that use a JRE or JDK 9

NOTE: At the moment Eclipse must be run with Java(TM) 9 if you want 
to use Java(TM) 9 in your workspace. You can download from from 
http://www.oracle.com/technetwork/articles/java/ea-jsp-142245.html.

This is an implementation of an early-draft specification developed under 
the Java Community Process (JCP) and is made available for testing and 
evaluation purposes only. The code is not compatible with any specification 
of the JCP.

Install the Java 9 Beta via the Eclipse Marketplace:

pass:[<a href="http://marketplace.eclipse.org/marketplace-client-intro?mpc_install=2393593" class="drag" title="Drag to your running Eclipse workspace to install Eclipse Java™ 9 Support (BETA) for Mars"><img src="https://marketplace.eclipse.org/sites/all/themes/solstice/_themes/solstice_marketplace/public/images/btn-install.png" alt="Drag to your running Eclipse workspace to install Eclipse Java™ 9 Support (BETA) for Mars" /></a>]


Java(TM) EE
~~~~~~~~~~~

Async support option in the New Servlet and Filter wizards
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Selecting this option will generate an annotation with the asyncSupport 
option enabled.

image::images/Servlet_Generation.png[]

EJB 3.x Support
^^^^^^^^^^^^^^^
An asynch support option has been added to the session bean wizard.
A non-persistent support option has been added to the timer callback wizard

Apache Tomcat 8 support
^^^^^^^^^^^^^^^^^^^^^^^
In anticipation of Apache Tomcat 8.0 stable releases becoming available in 
the near future, support has been added to create Apache Tomcat 8.0 runtimes 
and servers. In addition, support for the Serve modules without publishing 
feature is available for this version, but requires Apache Tomcat 8.0.5 or 
later to work correctly.

Generate Web Services targeting Tomcat 8
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Support for generating Web services targeting the Tomcat 8 Server. 

image::images/WebServicesTomcat8.png[]

Validation Filters for HTML Attributes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
HTML validation can now be configured to ignore specific attributes or 
attribute patterns. This can be useful for attributes that are used throughout 
a document but are not defined by the specification. A comma-separated 
list of attribute patterns can be configured at the workspace level on the 
*Web > HTML Files > Validation* preference page. 

image::images/attribute_patterns.png[]

In addition, quick fixes have been added that will make it easy to add 
attribute patterns to this list. 

image::images/attribute_quick_fix.png[]

Import Declarations for Unresolved Java Types in JSP Editor
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The JSP editor can now add import declarations for unresolved types in 
scriptlet regions. Select the unresolved type in the editor and choose 
*Add Import* (Ctrl+Shift+M/Cmd+Shift+M) from the *Source* menu.

Pick Colors from Preview in CSS Editor
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
When hovering over a color value in the CSS editor, a preview of the color 
is presented. The *Edit Property Color* toolbar action will open the system 
color dialog to edit this color. 

image::images/color_picker.png[]

C/pass:[C++]
~~~~~~~~~~~~

C/pass:[C++] Stand-alone Debugger as separate package
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The C/pass:[C++] Stand-alone Debugger is now available in the form of a separate, 
lightweight download in addition to being also part of the complete 
*Eclipse IDE for C/pass:[C++] Developers* package. Once extracted, it can be 
started by launching the *cdtdebug* executable. This new package can be 
obtained from the https://www.eclipse.org/cdt/downloads.php[CDT downloads] page.

Docker Support
^^^^^^^^^^^^^^
Use the *Run As > C/pass:[C++] Container Application* or *Debug As > C/pass:[C++] Container Application*
menu items to launch your C/pass:[C++] application in a Docker container.

image::images/Containerdebug.png[]

Options for Format with Empty Selection
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The *Format* command (Ctrl+Shift+F) in C/pass:[C++] editor can now be configured to format either 
the whole file or the current statement when no code is selected.

image::images/C_Editor_Preference_Page.png[]

Project-less Execution
^^^^^^^^^^^^^^^^^^^^^^
Specify any C/pass:[C++] program on the file system in a Run configuration and CDT will execute it.

image::images/CDT_ProjectLessRun.png[]

Import Existing Autotools Project
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
An import wizard has been added for importing an existing *Autotools* project into a 
C/pass:[C++] Autotools project. 

Exited Processes Shown in the Debug View
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The Debug view now keeps displaying exited processes, and displays the exit code.

image::images/CDT_ExitedProcessRestart.png[]

Menu to add Expression Group
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
With Mars, C/pass:[C++] Developers can create an Expression Group for all registers or one for all variables. 

image::images/CDT_ExpressionGroupMenu.png[]

Alignment specifiers
^^^^^^^^^^^^^^^^^^^^
The parser now supports alignment specifiers ('alignas' in pass:[C++] and '_Alignas' in C):

Arduino pass:[C++] Support
^^^^^^^^^^^^^^^^^^^^^^^^^^
The Arduino pass:[C++] support that will use the toolchains and SDKs and libraries from the 
standard Arduino IDE and let developers create C\+\+ projects that use them.

Add persistent information storage
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The Multicore Visualizer was enhanced to permit easy persistence of information. 
The information is saved in the workspace, and can be global for any instance of 
the view or saved per view.

General
~~~~~~~

Preference Recorder
^^^^^^^^^^^^^^^^^^^
The Preference Recorder enables the user to define preferences that 
they want to have propagated to all of the the workspaces on their machine. 

image::images/preferences-recorder.png[]

Preferences are recorded as they are set; every time a workspace is opened, 
the recorded preferences are checked and updated where necessary.

You can enable/disable the Preference Recorder via the *Oomph > Preference Recorder*
preference page.

Automatic Updates by Default
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
With Eclipse Mars, the automatic updates option is turned on by default. 
With this, Eclipse will periodically check with our servers to see if there 
are any updates available and give users the option to download and install 
them.

image::images/automatic-updates.png[]

By default, Eclipse will automatically look for updates every week. This
configuration can be changed on the *Install/Update > Automatic Updates* 
page in the preferences dialog.

Improved Performance for updates
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Changes in the compression strategy used for software repositories 
has greatly improved the performance and footprint of updates.

Improvements in the Dark Theme
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Significant work went into improving the fidelity of the the Dark Theme; 
these improvements drove improved support for general styling via CSS, 
and new icons that render much better against the dark background 
(and other colours).

image::images/dark_theme_new_pde.png[]

Nested/Hierarchical view of projects
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The *Project Explorer* now provides the ability to view the projects in a 
hierarchical (a.k.a. nested) form. For modular projects, this allows to 
have your project mapping more closely the organization of your 
modules as they are on the file system. This hierarchical view of projects 
often makes easier to navigate modular projects.

Hierarchical view of projects can be triggered from the *Project Explorer* 
view menu, under the *Projects Presentation* item.

image::images/nested-projects-menu.png[]

Then it makes the folders that are at the same location as a project 
replaced by the project, and the projects that are nested under other 
projects will not be shown as root elements.

image::images/nested-projects.png[]

Preference Customization
^^^^^^^^^^^^^^^^^^^^^^^^
The Perspective customization dialog, which 
dropped out of the 4.x stream, is back, and a nested/hierarchical view of 
projects is now supported by the *Project Explorer*. 

Launch Bar
^^^^^^^^^^
The Launch Bar provides convenient fine grained control over launch configurations.
It is a tool bar control that has drop-down selectors for the active *Launch Mode*, 
*Launch Descriptor*, and *Launch Target* and buttons to build, launch, or stop
the launch configuration.

image::images/launch-bar.png[]

The Launch Bar is included the Eclipse IDE for C/pass:[C++] Developers package, and
can be added to other packages (e.g. to control Java, PHP, and other
launch configurations).

You an activate or deactivate the Launch Bar via the 
*Run/Debug > Launching > Launch Bar* page in the preferences dialog.

Text search speedup
^^^^^^^^^^^^^^^^^^^
Text search has been sped up by a factor 3x-4x for full workspace searches 
on multi-core machines.

Print button hidden by default
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The Print button on the main toolbar is now hidden by default.
The button can be added back to the toolbar via the *Customize Perspective* 
dialog. To open this dialog, right-click on the current perspective button 
and select the *Customize...* menu item.

In the *Tool Bar Visibility* tab, expand *File*, select *Print*, and click *OK*.

Error Reporting
~~~~~~~~~~~~~~~

Automatic Error Reporter
^^^^^^^^^^^^^^^^^^^^^^^^
The Error Reporter sends information about errors that occur in the workbench
to the Eclipse Foundation. This information is relayed to the appropriate
Eclipse project development team.

image::images/error-reporter.png[]

Users don't need to create an account, or provide any identifying information. 
Potentially personal information is obfuscated by default. Use the *Install/Update > Automatic 
Updates* preferences page to tune the update behaviour.

UI responsiveness monitoring
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
You can enable automatic detection of periods when the Eclipse user 
interface is unresponsive:

image::images/ui-responsiveness-monitoring.png[]

UI freezes longer than the warning threshold are logged to the Eclipse 
error log as warnings. The logged messages include one or more stack 
traces of the display thread. Longer UI freezes are logged as errors 
and include stack traces of all threads. Please keep in mind that 
capturing stack traces of all threads involves extra overhead, so 
setting the error threshold below 1 second is not recommended.

A UI freeze is logged at the end of the freeze or after the deadlock 
threshold has expired, whichever comes first. The latter condition 
facilitates logging of indefinite UI freezes caused by deadlocks.

Paired with the Error Reporter, the UI Responsiveness Monitor
this helps Eclipse open source software developers identify and 
ultimately fix performance issues and improve the overall user experience.

You can configure the UI Responsiveness Monitor via the *General > UI Responsiveness*
page in the preferences dialog.

Platform
~~~~~~~~

Default max heap size increased to 1024 MB
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
To improve the "out of the box" user experience on today's modern 
hardware, the default maximum heap size (-Xmx VM argument) has been 
increased from 512M to 1024M. And the initial heap size (-Xms) 
has been increased from 40M to 256M.

GTK3 Support
^^^^^^^^^^^^
For Linux users, GTK3 support is much improved.

Mac OS X distribution now an Application Bundle
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Eclipse packages for OS X are now distributed in a more 
standard "Mac App" format, instead of the "directory format" we have 
used in the past.

CAUTION: Current Mac users cannot update to Mars from a previous
version; doing so will break the installation! Mac users must 
start with a fresh download.

In the event that you updated before reading this, and have ended 
up with a broken installation, see 
https://wiki.eclipse.org/Platform-releng/Issues_related_to_Mac_App_installations[Issues related to Mac App installations]
for the steps to recover your installation, after getting a fresh download.

Team
~~~~

Support git-flow
^^^^^^^^^^^^^^^^
The Git integration tools support http://jeffkreeftmeijer.com/2010/why-arent-you-using-git-flow/[git-flow]
to automate git branching workflow.

Git Project Import Wizard
^^^^^^^^^^^^^^^^^^^^^^^^^
Import projects into the workspace directly from Git or Gerrit.

image::images/git-import.png[]

Git Configuration Java Variable
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Use *git-config* values in your Java templates.

image::images/git-template-var.png[]

CVS Removed from Packages
^^^^^^^^^^^^^^^^^^^^^^^^^
CVS is no longer included with Eclipse packages by default.

You can install CVS support into any Eclipse package via the Eclipse Marketplace:

pass:[<a href="http://marketplace.eclipse.org/marketplace-client-intro?mpc_install=2408355" class="drag" title="Drag to your running Eclipse workspace to install CVS Integration"><img src="https://marketplace.eclipse.org/sites/all/themes/solstice/_themes/solstice_marketplace/public/images/btn-install.png" alt="Drag to your running Eclipse workspace to install CVS Integration" /></a>]

[[build]]
Build
~~~~~

Gradle Tools
^^^^^^^^^^^^
Tools for importing existing Gradle build scripts as Eclipse projects; 
and building, maintaining, and running Gradle builds can be easily added
to any of the Eclipse Mars packages.

Install Gradle Tools from the Eclipse Marketplace:

pass:[<a href="http://marketplace.eclipse.org/marketplace-client-intro?mpc_install=2306961" class="drag" title="Drag to your running Eclipse workspace to install Buildship Gradle Integration"><img src="https://marketplace.eclipse.org/sites/all/themes/solstice/_themes/solstice_marketplace/public/images/btn-install.png" alt="Drag to your running Eclipse workspace to install Buildship Gradle Integration" /></a>]

Maven Improvements
^^^^^^^^^^^^^^^^^^
Improved Maven support, including support for Maven 3.3.3, improved 
pom editor support, and support for auto-update and auto build. 

New Features
~~~~~~~~~~~~

Docker Tools
^^^^^^^^^^^^
Mars includes new tools for Docker that let the user manage and control 
their Docker images and containers.

image::images/Docker.png[]

Cordova Tools
^^^^^^^^^^^^^
Through Apache Cordova integration, deploy to a variety of devices. You 
can develop using only HTML, CSS, and JavaScript but get access to the native 
device APIs.

image::images/Cordova.png[]

Install Cordova Tools via the Eclipse Marketplace:

pass:[<a href="http://marketplace.eclipse.org/marketplace-client-intro?mpc_install=2168203" class="drag" title="Drag to your running Eclipse workspace to install Eclipse Thym"><img src="https://marketplace.eclipse.org/sites/all/themes/solstice/_themes/solstice_marketplace/public/images/btn-install.png" alt="Drag to your running Eclipse workspace to install Eclipse Thym" /></a>]

Installer
^^^^^^^^^
For the Mars release, we are introducing a new Eclipse installer. This is 
a new more efficient way to install Eclipse. It is a proper installer, so 
no more zip files, with a self extracting download that will lead you through 
the installation experience. For those not into installers, we still have the 
packages and zip files available on our [download] pages.

image::images/InstallerMain.png[]

Please see link:/downloads/installer-instructions.php[6 Steps to Install Eclipse].

The installer's advanced mode is where the real power lies. With advanced 
mode, a user can realize a complete development environment including all 
the Eclipse plug-ins they need, and a fully provisioned workspace that 
includes source code from Git repositories, tasks from issue trackers, 
and a target environment for builds. With this, a developer can provision 
a complete development environment and be ready to start compiling, running, 
and testing in just a few minutes. 

The current implementation supports the 
creation of environments that get developers started to work on building 
contributions for Eclipse open source projects, as well as a handful of 
other open source projects. Tools are provided by the
http://www.eclipse.org/oomph[Oomph project] to 
assist with the creation of configurations for other environments. 

Remote Services Tooling Perspective
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Remote Services Tooling supports development, debugging, and deployment of 
http://www.eclipse.org/ecf[ECF] Remote Services. The new Remote Service perspective
shows the new Endpoint Discovery view dynamically updates to display Endpoints 
that have been discovered via network discovery (i.e. using ECF-supported network 
protocols like zeroconf, slp, zookeeper, dnssd, etcd, or custom). 

image::images/remoteserviceperspective2.png[]

Discovered Endpoints can be Imported into Eclipse, locally registering a proxy 
for the remote service that allows application code to actually use the remote 
service (i.e. call its methods). 

More
~~~~

GEF4
^^^^
https://wiki.eclipse.org/GEF/GEF4[GEF4] is the next generation API of the Graphical 
Editing Framework (GEF). The GEF project team has been working hard on it for 5 years 
now (in parallel to maintaining the current production components Draw2d 3.x, 
GEF (MVC) 3.x, and Zest 1.x), and with Mars has released a first snapshot (with still 
provisional API), together with a minor release of the currently available 
production components. 

OSGi R6 Remote Service and Remote Service Admin (1.1) Specifications
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Eclipse Mars includes fully-compliant implementations of the *OSGi R6 
https://wiki.eclipse.org/ECF#OSGi_Remote_Services[Remote Service] and 
https://wiki.eclipse.org/Remote_Services_Admin[Remote Service Admin] (1.1)* specifications.

Sources
~~~~~~~
Content for this document were harvested from multiple sources, including:

* https://www.eclipse.org/eclipse/news/4.5/M7/[Eclipse Project New and Noteworthy];
* https://www.eclipse.org/webtools/releases/3.6.0/NewAndNoteworthy/[Eclipse Web Tools New and Noteworthy]; and
* https://www.eclipse.org/ecf/NewAndNoteworthy_3.10.0.html[ECF New and Noteworthy].