On Thu, 16 Nov 2023 05:14:21 GMT, Abhishek Kumar <abhis...@openjdk.org> wrote:

>> test/jdk/com/sun/java/swing/plaf/gtk/TestFileChooserSingleDirectorySelection.java
>>  line 46:
>> 
>>> 44:  * @run main TestFileChooserSingleDirectorySelection
>>> 45:  */
>>> 46: 
>> 
>> I don't know why it was necessary to move all around all the above lines.
>> And whilst import java.io sorts after java.awt, it is long standing 
>> convention that the "core"
>> packages (easily distinguished these days as those in the java.base module) 
>> are listed before the desktop / AWT / Swing ones. This is true of product 
>> source as well as tests.
>> So you should just undo all of the above except for adding the new bug id.
>
> Updated.

> And whilst import java.io sorts after java.awt, it is long standing 
> convention that the "core"
> packages (easily distinguished these days as those in the java.base module) 
> are listed before the desktop / AWT / Swing ones. This is true of product 
> source as well as tests.

@prrace This is the first time I hear this. In all the classes I've seen in AWT 
and Swing, the imports are sorted alphabetically with `java.io` after 
`java.awt`.

I just looked at 
[`JComponent`](https://github.com/openjdk/jdk/blob/5e818318eac8cda7d42b599dc7d7d44e5c299a9f/src/java.desktop/share/classes/javax/swing/JComponent.java#L54-L61),
 
[`Component`](https://github.com/openjdk/jdk/blob/5e818318eac8cda7d42b599dc7d7d44e5c299a9f/src/java.desktop/share/classes/java/awt/Component.java#L61-L65),
 
[Font](https://github.com/openjdk/jdk/blob/6ce0ebb858d3112f136e12d3ad595f805f6871a0/src/java.desktop/share/classes/java/awt/Font.java#L32-L38),
 and

https://github.com/openjdk/jdk/blob/6ce0ebb858d3112f136e12d3ad595f805f6871a0/src/java.desktop/share/classes/sun/font/FontManager.java#L28-L30

https://github.com/openjdk/jdk/blob/6ce0ebb858d3112f136e12d3ad595f805f6871a0/src/java.desktop/share/classes/sun/font/Font2D.java#L28-L36

[Sun/Oracle Code Conventions for Java Programming 
Language](https://www.oracle.com/java/technologies/javase/codeconventions-fileorganization.html#277)
 say nothing about the order of imports. (The HTML version has absolutely 
broken formatting now.) [Google Java Style 
Guide](https://google.github.io/styleguide/javaguide.html#s3.3-import-statements)
 states, <q 
cite="https://google.github.io/styleguide/javaguide.html#s3.3-import-statements";>…the
 imported names appear in ASCII sort order.</q>

Andreas Lundblad's draft for [Java Style 
Guidelines](https://cr.openjdk.org/~alundblad/styleguide/index-v6.html#toc-import-statements),
 which is more or less followed by the OpenJDK project, defines the following 
order:

> Import statements should be sorted…
>
> *  …primarily by non-static / static with non-static imports first.
> * …secondarily by package origin according to the following order
>   * `java` packages
>   * `javax` packages
>   * external packages (e.g. `org.xml`)
>   * internal packages (e.g. `com.sun`)
> * …tertiary by package and class identifier in lexicographical order

[Andreas](https://github.com/aioobe) opened [PR 
14](https://github.com/openjdk/guide/pull/14) to incorporate it into OpenJDK 
Developers' Guide, but there are objections to making the Java Code Conventions 
part of the developers' guide.

I believe it's not even the first time such a discussion happens in the 
clientlibs. There are no guidelines…

Personally, I think putting `java.awt` classes above `java.io` or `java.util` 
makes perfect sense for clientlibs classes — it is what we care the most, it is 
what we're developing and maintaining, so `java.awt` is more relevant to us. 
And it automatically sorts this way in IDE; manually sorting imports is tedious 
and error-prone.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/16674#discussion_r1402059540

Reply via email to