primer for writing Java 9 taglets

Rick Hillegas rick.hillegas at gmail.com
Wed Jul 13 01:45:48 UTC 2016


Hi Jon,

Thanks for replying. Some comments inline...

On 7/11/16 7:00 PM, Jonathan Gibbons wrote:
>
>
> On 07/11/2016 06:28 PM, Rick Hillegas wrote:
>> Hey folks,
>>
>> Is there a primer for writing Java 9 Taglets which is similar to the 
>> primer for writing old-style Taglets found here: 
>> http://docs.oracle.com/javase/7/docs/technotes/guides/javadoc/taglet/overview.html. 
>> I am trying to get a clean, warning-free build of Apache Derby using 
>> b124 of JDK 9. In order to do this, I need to eliminate the doclet 
>> deprecation warnings introduced by b124.
>>
>> Thanks,
>> -Rick
>
> Hi Rick,
>
> Yes, the world in this area has changed a lot in JDK 9.
>
> I'm assuming from your reference that your taglets do conform to the 
> (simple) API in this page:
> http://docs.oracle.com/javase/7/docs/jdk/api/javadoc/taglet/com/sun/tools/doclets/Taglet.html 
>
>
> I say that to make sure you're not using the more complex internal API 
> that never became officially public, and which accesses a lot of 
> JDK-internal API.
>
> The good news for you is that there is a replacement; the bad news is 
> the guides have not been updated, and worse, we don't currently 
> publish any JDK 9 API docs other than the Java SE API. (But that's a 
> separate issue we're working on.)   But the API is there, if you're 
> prepared to build the docs. So, if you're able to build JDK 9, execute 
> "make docs" to build the API docs.   Then, in the 
> build/$CONFIGURATION/images/docs directory, look for the API rooted at 
> jdk/api/javadoc/doclet/index.html, i.,e.
> build/$CONFIGURATION/images/docs/jdk/api/javadoc/doclet/index.html
>
> That will show you the new replacement API, using the DocTree API 
> added as part of the Compiler Tree API , in JDK 8.
> See here 
> https://docs.oracle.com/javase/8/docs/jdk/api/javac/tree/index.html
> and here: 
> https://docs.oracle.com/javase/8/docs/jdk/api/javac/tree/com/sun/source/doctree/package-summary.html
>
> It should be reasonably simple to convert taglets from the old API to 
> the new API.
This is the crux of the problem. No doubt it looks simple to experts. 
But it's puzzling me. I have indeed looked at the old and new APIs.  
Tags knew how to turn themselves into strings. Now Tags have been 
replaced by DocTrees, which are phrased in terms of a visitor pattern. 
Code for a sample Taglet.toString() implementation would be helpful if 
you have it handy.

>
>
> Given that the old Taglet API was a supported API in JDK 8, albeit a 
> somewhat obscure one, it will continue to be available in JDK 9, 
> although as you have seen, it is now deprecated. You can continue to 
> use it, in conjunction with the old standard doclet, and simply 
> suppress the deprecation warnings with @SuppressWarnings("deprecation").
This is the last resort. So far I have managed to cope with all the 
other deprecation warnings introduced by Java 9. I have not had to 
suppress any warnings, but have, instead, managed to modernize the Derby 
codebase. I'm hoping that a little sample code will help me over this 
doclet speedbump.

Thanks,
-Rick
>   However, if you are looking to use a taglet in the new standard 
> doclet (which understands JDK 9 modules) then you will have to convert 
> to the new improved API.
>
> -- Jon
>
>
>
>
>



More information about the javadoc-dev mailing list