Draft of restarted "OpenJDK Developers' Guide" available for discussion
Joe Darcy
joe.darcy at oracle.com
Mon May 17 12:07:08 PDT 2010
Joe Darcy wrote:
> Hello.
>
> After receiving some off-list feedback and some additional
> self-editing, I considering making the following changes in the next
> draft:
>
I've posted draft 0.776 to
http://cr.openjdk.java.net/~darcy/OpenJdkDevGuide/OpenJdkDevelopersGuide.v0.776.html
In addition to the previously mentioned changes, this draft changes the
URLs of the images and reflect various corrections and suggestions from
Oracle's docs team; diff below.
-Joe
8c8
< <h1>OpenJDK Developers' Guide, Version 0.775</h1>
---
> <h1>OpenJDK Developers' Guide, Version 0.776</h1>
116c116
< The purpose of this guide is help you, an OpenJDK developer, to discern
---
> The purpose of this guide is to help you, an OpenJDK developer, to
discern
122c122
< are good approaches to make progress.
---
> is a good approach to making progress.
134,136c134,138
< done - say, adding a new package - and the release-specific
< documentation will describe <em>how</em> a task is done in that
< release, such as any needed build changes to add a new package.
---
> done, say, adding a new package.
>
> The release-specific documentation will describe <em>how</em> a
> task should be done in that release, such as any needed build changes
> to add a new package.
233c235
<
src="http://blogs.sun.com/darcy/resource/OpenJDK_Developers_Guide/CompatGrid.png"
---
> src="http://cr.openjdk.java.net/~darcy/OpenJdkDevGuide/CompatGrid.png"
295,296c297,299
< <img
src="http://blogs.sun.com/darcy/resource/OpenJDK_Developers_Guide/MaintUpdateCompat.png"
< alt="Maintenance and Update Release Compatibility" title="Maintenance
and Update Release Compatibility"/>
---
> <img
>
src="http://cr.openjdk.java.net/~darcy/OpenJdkDevGuide/MaintUpdateCompat.png"
> alt="Maintenance and Update Release Compatibility"/>
356c359,360
< <img
src="http://blogs.sun.com/darcy/resource/OpenJDK_Developers_Guide/PlatformCompat.png"
---
> <img
>
src="http://cr.openjdk.java.net/~darcy/OpenJdkDevGuide/PlatformCompat.png"
469,470c473,476
< is impractical, so evolving such APIs in this environment is quite
< constrained by comparison.
---
> is impractical.
>
> So evolving such APIs in this environment is quite constrained by
> comparison.
478c484
< is some fashion (or not) with respect to two versions of a library
---
> in some fashion (or not) with respect to two versions of a library
512c518
< aspects; that is, the positive aspect keeping things that "work"
---
> aspects; that is, the positive aspect of keeping things that "work"
573,575c579,583
< their binary compatibility impact. All these changes could also be
< classified according to their source compatibility repercussions, but
< only a few of kinds of changes will be analyzed below.
---
> their binary compatibility impact.
>
> All these changes could also be classified according to their source
> compatibility repercussions, but only a few of kinds of changes will
> be analyzed below.
660,661c668,670
< Then <i>L</i><sub>2</sub> adds class <code>bar.Quux</code>. This
< program
---
> Then <i>L</i><sub>2</sub> adds class <code>bar.Quux</code>.
>
> Consider the following program:
679,681c688,691
< will compile under <i>L</i><sub>1</sub> but <i>not</i> under
< <i>L</i><sub>2</sub> since the name "<code>Quux</code>" is now
< ambiguous as reported by <tt>javac</tt>:
---
> The <code>HelloQuux</code> class will compile under
> <i>L</i><sub>1</sub> but <i>not</i> under <i>L</i><sub>2</sub> since
> the name "<code>Quux</code>" is now ambiguous as reported by
> <tt>javac</tt>:
771c781
< This transformation is also binary incompatible.
---
> Removing a method is also binary incompatible.
773,774c783,784
< The remaining changes to <code>Lib</code> will all preserve binary
< compatibility.
---
> The remaining changes to <code>Lib</code> discussed below will all
> preserve binary compatibility.
907,909c917,920
< method taking one <code>int</code> argument is selected and no
< conversion instruction from <code>int</code> to <code>double</code> is
< present to be executed before the method is called.
---
> method taking one <code>int</code> argument is selected and there is
> no intermediary conversion instruction from <code>int</code> to
> <code>double</code> to convert the argument before the
> <code>invokevirtual</code> instruction to call the method.
995c1006
< taking a <code>long</code></a> as part of
---
> taking a <code>long</code> argument</a> as part of
1021c1032,1034
< <img
src="http://blogs.sun.com/darcy/resource/OpenJDK_Developers_Guide/SrcCompatLevels.jpg"
alt="Source compatibility levels of FQN programs">
---
> <img
>
src="http://cr.openjdk.java.net/~darcy/OpenJdkDevGuide/SrcCompatLevels.jpg"
> alt="Source compatibility levels of FQN programs"/>
1028c1041
< In binary preserving source compatibility, existing clients will yield
---
> In binary-preserving source compatibility, existing clients will yield
1233,1234c1246,1248
< elements in this set. The elements are returned in no particular
< order.
---
> elements in this set.
>
> The elements are returned in no particular order.
1243,1247c1257,1263
< The iterator algorithm can and has varied over the years. These
< variations are fully source and binary compatible. While such
< behavioral differences are fine in a platform release, because of
< behavioral compatibility they are marginally acceptable for a
< maintenance release, and only questionable for an update release.
---
> The iterator algorithm can and has varied over the years.
>
> These variations are fully source and binary compatible.
>
> While such behavioral differences are fine in a platform release,
> because of behavioral compatibility they are marginally acceptable for
> a maintenance release, and only questionable for an update release.
1316c1332
< <li><p>Deletes yeoman Janice Rand
---
> <li><p>Deletes yeoman <tt>JANICE_RAND</tt>
1319c1335
< <li><p>Adds Pavel Chekov
---
> <li><p>Adds <tt>PAVEL_CHEKOV</tt>
1338,1341c1354,1358
< compilations. The deletion is also binary incompatible. Besides
< being observable via reflection, the deletion affects the behavior of
< various built-in methods on the enum, including <tt>values</tt> and
< <tt>valueOf</tt>.
---
> compilations.
>
> The deletion is also binary incompatible. Besides being observable
> via reflection, the deletion affects the behavior of various built-in
> methods on the enum, including <tt>values</tt> and <tt>valueOf</tt>.
1352c1369
< <li><p>Adding <tt>CHEKOV</tt> is binary-preserving source compatible.
---
> <li><p>Adding <tt>PAVEL_CHEKOV</tt> is binary-preserving source
compatible.
1373c1390
< <li><p>Reordering McCoy, Scotty, and Spock is a binary-preserving
---
> <li><p>Reordering Bones, Scotty, and Spock is a binary-preserving
1484,1490c1501,1508
< For discussing the evolution policies of the JDK, the term "interface"
< will not only refer to an <code>interface</code> type but also much
< more broadly to any means by which one software component interacts
< with another software component or with a human. This notion of
< interface covers Java SE APIs, command line options, file locations, file
< formats, network protocols, GUIs, and many other observable aspects of
< the JDK.
---
> When discussing the evolution policies of the JDK, the term
> "interface" will not only refer to an <code>interface</code> type but
> also much more broadly to any means by which one software component
> interacts with another software component or with a human.
>
> This notion of interface covers Java SE APIs, command line options,
> file locations, file formats, network protocols, GUIs, and many other
> observable aspects of the JDK.
1522,1524c1540,1543
< list iterator (with <code>listIterator()</code>). Then, it iterates
< over the list until the specified element is found or the end of the
< list is reached."
---
> list iterator (with <code>listIterator()</code>).
>
> Then, it iterates over the list until the specified element is found
> or the end of the list is reached."
1628,1630c1647,1650
< over and above the general evolution policy. For example, some groups
< may have agreements concerning how particular unofficial interfaces
< may change over time.
---
> over and above the general evolution policy.
>
> For example, some groups may have agreements concerning how particular
> unofficial interfaces may change over time.
1692c1712
< it.
---
> the interface.
1728c1748
< intended to assist and supplement the engineers' primary responsibly
---
> intended to assist and supplement the engineers' primary responsibility
1772c1792
< Are contemporary language features employed wisely?
---
> Are contemporary language features being employed wisely?
1808a1829,1840
>
> When trying to measure efficiency, beware meddling with
> micro-benchmarks!
>
> Popular JVM implementations are dynamic environments which make
> measuring small performance differences with micro-benchmarks a subtle
> task, quick to cause anger.
>
> Also, between several possible alternative codes, the alternative
> which performs best on a particular JVM implementation may not perform
> best on other JVM implementations of interest.
>
1841,1842c1873,1874
< C, C++, shell, and so on; these preferences extend to encompass
< writing regression tests.</p>
---
> C, C++, shell, and so on; these preferences extend to writing
> regression tests.</p>
1899c1931
< extant of the change.
---
> extent of the change.
1914a1947,1961
> <p>
>
> While revewing patch files is adaquate for small changes, larger
> changes are often facilated by use of <a
> href="http://blogs.sun.com/jcc/resource/webrev">webrev</a>.
>
> The webrev script produces a set of HTML pages providing multiple
> views of the change.
>
> The change is presented as various flavors of <a
> href="http://en.wikipedia.org/wiki/Diff">diff</a> output as well as
> original and new versions of each modified file.
>
> </p>
>
1917c1964
< <p>Thou shalt write regression/unit tests to accompany one's JDK
---
> <p>Thou shalt write regression/unit tests to accompany thy JDK
1961,1964c2008,2015
< Using the annotation places more of the semantics of the code in the
< source code proper as opposed to a comment while using the javadoc tag
< allows alternate functionality to be recommended along with the
< specification for the element.
---
> Using an annotation to formally indicate deprecation declares the
> semantics of the code in the code itself, as opposed to the previous
> practice before annotations were available of marking deprecation with
> a comment.
>
> Using a paired <code>@derepcated</code> javadoc tag for informative
> purposes allows the deprecation to be explained and any alternate
> functionality recommended.
1990c2041,2043
< Copyright © 2010 Oracle Corporation and/or its affiliates. All
rights reserved.
---
> Copyright © 2010 Oracle Corporation and/or its affiliates.
>
> All rights reserved.
More information about the guide-discuss
mailing list