Author: [EMAIL PROTECTED]
Date: Tue Dec  9 12:58:53 2008
New Revision: 4284

Modified:
    wiki/GwtJavaApiCompatibilityChecker.wiki

Log:
Edited wiki page through web user interface.

Modified: wiki/GwtJavaApiCompatibilityChecker.wiki
==============================================================================
--- wiki/GwtJavaApiCompatibilityChecker.wiki    (original)
+++ wiki/GwtJavaApiCompatibilityChecker.wiki    Tue Dec  9 12:58:53 2008
@@ -4,13 +4,13 @@
  GWT Java API compatibility checker is a tool to check two versions of GWT  
for API source compatibility. In particular, the tool can ensure that newer  
releases of GWT are able to compile applications that previous versions  
could compile. A user can also specify explicit API changes that must  
be "white-listed," i.e., ignored by the tool. While we focus on GWT, this  
tool works for any Java API.

  = Background =
-A key advantage of GWT is that client applications (developed using GWT)  
do not have to worry about supporting new browsers or newer versions of a  
previously supported browser. GWT handles such issues. For example, when  
IE8 will be released, client application developers will be able to easily  
support IE8 by simply compiling their applications against a newer version  
of GWT. In general, as GWT continues to improve both in the quality of the  
JavaScript code it generates and the number of platforms it supports,  
client application developers can tap into these improvements by simply  
compiling the Java versions of their applications against the latest  
version of GWT. For client application developers to be able to  
successfully tap into these improvements, new GWT releases must  
successfully compile applications that previous versions could compile. We  
call this property API source compatibility.
+A key advantage of GWT is that client applications (developed using GWT)  
do not have to worry about supporting new browsers or newer versions of a  
previously supported browser. GWT handles such issues. For example, when  
IE8 will be released, client application developers will be able to easily  
support IE8 by simply compiling their applications against a newer version  
of GWT. In general, as GWT continues to improve both in the quality of  
the !JavaScript code it generates and the number of platforms it supports,  
client application developers can tap into these improvements by simply  
compiling the Java versions of their applications against the latest  
version of GWT. For client application developers to be able to  
successfully tap into these improvements, new GWT releases must  
successfully compile applications that previous versions could compile. We  
call this property API source compatibility.


  As GWT's popularity increases, the challenge of maintaining GWT's API  
source compatibility is going to increase due to two factors. First, the  
GWT code is likely to become more complex over time as the number of  
features and platforms it supports increases. Second, the number of  
contributors to GWT is likely to increase as well. With increasing number  
of contributors, the changes to the source code will increase in both  
magnitude and number. Therefore it is desirable to automate the task of  
checking API source compatibility.


-Other evolving APIs, most notably the Java language API, also face a  
similar problem [1]. Almost all of these APIs aim for binary compatibility,  
as specified in the Java language specification [2]. With binary  
compatibility, the aim for a new API release is to ensure that the client  
applications can use the class files of the new release in place of the  
class files of the previous release. There is no recompilation involved.  
Several tools exist for checking API binary compatibility [3, 4]. To the  
best of our knowledge, no tool exists for checking API source compatibility.
+Other evolving APIs, most notably the Java language API, also face a  
similar problem ![1]. Almost all of these APIs aim for binary  
compatibility, as specified in the Java language specification ![2]. With  
binary compatibility, the aim for a new API release is to ensure that the  
client applications can use the class files of the new release in place of  
the class files of the previous release. There is no recompilation  
involved. Several tools exist for checking API binary compatibility [3, 4].  
To the best of our knowledge, no tool exists for checking API source  
compatibility.


  Of course, there can be cases when breaking the API is necessary. To  
handle these cases, the tool should support "white-lists." Specifying a  
whitelist explicitly should force the developers to think twice before  
breaking an API. The whitelist would also help client applications in  
refactoring their code appropriately.
@@ -71,7 +71,8 @@

     # Check compatibility: When ApiComptabilityChecker is provided a  
configuration file with information about the two repositories, it checks  
them for source compatibility and outputs the API difference. The API  
difference is a list of API change messages, with each API change message  
listed on a separate line. An API change message specifies two things: (i)  
a java package, class, method, or field in the existing API, (ii) the  
manner in which the API has changed. For example, an API change message  
could be "java.net MISSING" indicating that the package java.net has been  
removed. Each API change message is followed by an optional string  
containing additional information about the API change.

-{{{      java ApiCompatibilityChecker configFile
+{{{
+java ApiCompatibilityChecker configFile
  }}}

     # Check compatibility with expected failures whitelisted: The tool can  
handle a whitelist of API changes, specified in the "whitelist" section of  
the config file. These changes are excluded from the output.

--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~----------~----~----~----~------~----~------~--~---

Reply via email to