Skip to content

Commit b2c58fa

Browse files
committed
Eclipse 2024-12: Add sample code; add narration; update features to show
1 parent beba6aa commit b2c58fa

31 files changed

+440
-27
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
eclipse.preferences.version=1
2+
encoding/<project>=UTF-8

README.md

+25-27
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
[2019-06](https://github.com/howlger/Eclipse-IDE-improvements-videos/tree/2019-06)
2424
</sup>
2525

26-
# +++ Work in progress (for December 4, 2024) +++<br>Eclipse IDE 2024-12 Improvements Video <!--# [Eclipse IDE 2024-12 Improvements Video](https://youtu.be/jTaiDGVwygE)-->
26+
# [Eclipse IDE 2024-12 Improvements Video](https://youtu.be/jTaiDGVwygE)
2727

2828
* [December 4, 2024](https://calendar.google.com/calendar/event?eid=MnJoYzFsOGk1Y3BocjNrYTY4NW9kdXNuODUgZ2NoczdubTRudnBtODM3NDY5ZGRqOXRqbGtAZw&ctz=Europe/Berlin) ([calendar](https://calendar.google.com/calendar/[email protected]&ctz=Europe/Berlin)) - [projects](https://projects.eclipse.org/releases/2024-12) - [wiki](https://github.com/eclipse-simrel/.github/blob/main/wiki/Simultaneous_Release.md) - [website](https://eclipseide.org/) ([New & Noteworthy](https://eclipseide.org/release/noteworthy/)) - [splash screen](https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/issues/3963)
2929
* Builds: [latest unreleased](https://download.eclipse.org/technology/epp/staging/)[released](https://download.eclipse.org/technology/epp/downloads/release/2024-12/) ([Jenkins](https://ci.eclipse.org/packaging/job/simrel.epp-tycho-build), [*.aggrcon](https://github.com/eclipse-simrel/simrel.build/commits/main), update sites: [staging](https://download.eclipse.org/staging/2024-12), [release](http://download.eclipse.org/releases/2024-12))
@@ -63,55 +63,53 @@
6363

6464
### Features to show
6565

66-
* [IDE packages for Windows on ARM](https://github.com/eclipse-packaging/packages/issues/162) (thanks to the now available Eclipse Temurin JDKs for Windows on ARM)
67-
* **Java<!-- [📽️](https://youtu.be/u8llH82TfPc?t=16)-->**
66+
* **IDE packages for additional platforms [📽️](https://youtu.be/J-oudd3UWmg?t=19)**:
67+
* **[Windows on ARM](https://github.com/eclipse-packaging/packages/issues/162)** (supported by the [Eclipse platform since the last release](https://download.eclipse.org/eclipse/downloads/drops4/R-4.32-202406010610/#PlatformRuntime) and now also by [OpenJDK](https://openjdk.org/jeps/388)/[Eclipse Temurin](https://adoptium.net/temurin/releases/?os=windows&arch=aarch64&version=21))
68+
* [Linux on RISC-V](https://github.com/eclipse-packaging/packages/issues/162) (supported by the Eclipse platform since this release; longer supported by [OpenJDK](https://openjdk.org/jeps/422)/Eclipse Temurin)
69+
* **Java[📽️](https://youtu.be/J-oudd3UWmg?t=45)**
6870
* [Java 23 support](https://eclipse.dev/eclipse/news/4.34/jdt.php#Java_23) (but IDE packages shipped with Java 21, the latest LTS version)
6971
* [JEP 467: Markdown Documentation Comments](https://openjdk.org/jeps/467), including [rendering in hover and _Javadoc_ view](https://eclipse.dev/eclipse/news/4.34/jdt.php#markdown-doc)
7072
* Preview features:
71-
* [JEP 477: Implicitly Declared Classes and Instance Main Methods (Third Preview)](https://openjdk.org/jeps/477): `void main() { println("Hello, World!"); }` is a minimal and complete "Hello, World!" application
72-
* [JEP 482: Flexible Constructor Bodies (Second Preview)](https://openjdk.org/jeps/482): In constructors, `super(...)` no longer needs to be the first statement
7373
* [JEP 476: Module Import Declarations (Preview)](https://openjdk.org/jeps/476), e.g. `import module java.desktop;` (with that, type import statements are only needed for ambiguous simple names, like `java.util.List` vs. `java.awt.List`)
74+
* [JEP 482: Flexible Constructor Bodies (Second Preview)](https://openjdk.org/jeps/482): In constructors, `super(...)` no longer needs to be the first statement
75+
* [JEP 477: Implicitly Declared Classes and Instance Main Methods (Third Preview)](https://openjdk.org/jeps/477): `void main() { println("Hello, World!"); }` is a minimal and complete "Hello, World!" application
7476
* Java editor
7577
* [New warning: _Unnecessary code > Value of lambda parameter is not used (22 or higher)_ with corresponding quick fix to configure its problem severity](https://eclipse.dev/eclipse/news/4.34/jdt.php#ui-unused-lambda-params)
7678
* [New quick fix: _Rename to unnamed variable_](https://eclipse.dev/eclipse/news/4.34/jdt.php#unused-to-unnamed-quickfix): when using Java 22 or above (see also corresponding clean-up bellow)
7779
* Clean-ups
78-
* [Enhanced: _Unnecessary Code > Unused code > Remove unused local variables_](https://eclipse.dev/eclipse/news/4.34/jdt.php#unused-to-unnamed-quickfix): to rename to unnamed variable (`_`) where possible and when using Java 22 or above:
79-
* Unused lambda parameters
80-
* Unused _try-with-resources_ resources
81-
* Unused pattern variables in _switch_
82-
* Unused variables in enhanced and in regular _for_ statements
80+
* [Enhanced: _Unnecessary Code > Unused code > Remove unused local variables_](https://eclipse.dev/eclipse/news/4.34/jdt.php#unused-to-unnamed-quickfix): to rename to unnamed variable (`_`) where possible and when using Java 22 or above (unused lambda parameters, _try-with-resources_ resources, pattern variables in _switch_ and variables in enhanced as well as in regular _for_ statements)
8381
* [New: _Code Style > Control statements > Simplify boolean if/else to single return if possible_](https://eclipse.dev/eclipse/news/4.34/jdt.php#boolean-if-else-cleanup): `if (...) { return true; } else { return false; }``return ...;`
8482
* ([Enhanced: _Code Style > Control statements > Convert if/else if/else chain with 3 blocks min to switch_](https://eclipse.dev/eclipse/news/4.34/jdt.php#if-else-to-switch-null-handling) to properly handle cases where the value can be `null`: Java 20 and lower (`if (... != null) { switch (...) { ... } } else { ... }`) vs. Java 21 and higher (`case null: ...` thanks to [JEP 441](https://openjdk.org/jeps/441)))
8583
* [_Call Hierarchy_ view: new filter button](https://eclipse.dev/eclipse/news/4.34/jdt.php#move-filter-button) with new option [to show test code only](https://eclipse.dev/eclipse/news/4.34/jdt.php#new-filter-options) (_Filter Test Code_ became _Hide Test Code_ or _Test Code only_)
8684
* [Performance](https://github.com/search?utf8=%E2%9C%93&q=performance+OR+speed+OR+faster+org%3Aeclipse-jdt+committer-date%3A2024-09-05..2024-12-10&s=committer-date&o=desc&type=Commits)
85+
* (Faster _Project > Clean..._ via [BatchImageBuilder: write .class files in batches](https://github.com/eclipse-jdt/eclipse.jdt.core/commit/334703df1992132f62da0a3370f47492b99ae613))
8786
* ([Avoid reading SourceFile twice](https://github.com/eclipse-jdt/eclipse.jdt.core/commit/55d99cde490111cad4874bc05eec03397ca5bc0e))
88-
* Faster _Project > Clean..._ via [BatchImageBuilder: write .class files in batches](https://github.com/eclipse-jdt/eclipse.jdt.core/commit/334703df1992132f62da0a3370f47492b99ae613)
89-
* [In the preferences _Java > Installed JREs > Execution Environments_, faster switching of the JRE](https://github.com/eclipse-jdt/eclipse.jdt.core/issues/2884) (via [Share JRT entries across projects](https://github.com/eclipse-jdt/eclipse.jdt.core/issues/2884) and [Faster `ExecutionEnvironmentsPreferencePage.performOk()`](https://github.com/eclipse-jdt/eclipse.jdt.debug/commit/c14e32ffe3e7b1bea78f2585a3f3c00d08993083))
90-
* (**Maven<!-- [📽️](https://youtu.be/u8llH82TfPc?t=328)-->**)
91-
* **Gradle<!-- [📽️](https://youtu.be/u8llH82TfPc?t=000)-->**
92-
* [Problems API integration](https://discuss.gradle.org/t/buildship-3-1-10-is-now-available/49045) (experimental; see also [commit](https://github.com/eclipse/buildship/commit/ec8eee378138a446e95631f56baaf389405210fd))
93-
* [Syntax highlighting in the compare editor for `build.gradle` files](https://github.com/eclipse/buildship/pull/1311)
94-
* **General/Platform<!-- [📽️](https://youtu.be/u8llH82TfPc?t=93)-->**
87+
* ([In the preferences _Java > Installed JREs > Execution Environments_, faster switching of the JRE](https://github.com/eclipse-jdt/eclipse.jdt.core/issues/2884) (via [Share JRT entries across projects](https://github.com/eclipse-jdt/eclipse.jdt.core/issues/2884) and [Faster `ExecutionEnvironmentsPreferencePage.performOk()`](https://github.com/eclipse-jdt/eclipse.jdt.debug/commit/c14e32ffe3e7b1bea78f2585a3f3c00d08993083)))
88+
* (**Maven<!-- [📽️](https://youtu.be/J-oudd3UWmg?t=328)-->**)
89+
* **Gradle [📽️](https://youtu.be/J-oudd3UWmg?t=311)**
90+
* [Problems API integration](https://discuss.gradle.org/t/buildship-3-1-10-is-now-available/49045): disabled by default; can be enabled in the preferences _Gradel > Experimental features: Enable Problems API support_, e.g. to get problem messages from `javac`, but not e.g. [from this _Modernizer Gradle plugin_](https://github.com/andygoossens/gradle-modernizer-plugin/issues/7) (experimental; see also [commit](https://github.com/eclipse/buildship/commit/ec8eee378138a446e95631f56baaf389405210fd))
91+
* ([Syntax highlighting in the compare editor for `build.gradle` files](https://github.com/eclipse/buildship/pull/1311))
92+
* **General/Platform [📽️](https://youtu.be/J-oudd3UWmg?t=364)**
9593
* Text editors
96-
* [Syntax highlighting for many formats in all IDE packages via TM4E language pack](https://github.com/eclipse-packaging/packages/blob/master/CHANGELOG.md#2024-12)
97-
* [Find/replace overlay: error marker for regular expressions](https://eclipse.dev/eclipse/news/4.34/platform.php#improved-regex-handeling)
94+
* ([Syntax highlighting for many formats in all IDE packages via TM4E language pack](https://github.com/eclipse-packaging/packages/blob/master/CHANGELOG.md#2024-12))
95+
* ([Find/replace overlay: error marker for regular expressions](https://eclipse.dev/eclipse/news/4.34/platform.php#improved-regex-handeling))
9896
* [UI](https://github.com/search?utf8=%E2%9C%93&q=dark+OR+light+OR+theme+OR+layout+org%3Aeclipse-platform+org%3Aeclipse-jdt+committer-date%3A2024-09-05..2024-12-10&s=committer-date&type=Commits)
9997
* [On Windows, Monitor-specific scaling (experimental)](https://eclipse.dev/eclipse/news/4.34/platform.php#rescale-on-runtime-preference): disabled by default; can be enabled in _Window > Preferences: General > Appearance_
10098
* [Multi-page editors: Tabs at top or bottom](https://eclipse.dev/eclipse/news/4.34/platform.php#dynamic-tab-alignment): in preferences _General > Editors_ for _Align multi-page editor tabs_ choose _Top_ or _Bottom_
10199
* ([Code Mining text color configurable](https://eclipse.dev/eclipse/news/4.34/platform.php#code-minig-color))
102100
* ([Make Grey Highlight of Inactive Tabs Darker](https://github.com/eclipse-platform/eclipse.platform.ui/commit/8df2017769466ee8993656468e7ccb8fc99a5228))
103101
* ([On Windows, improvements to Edge browser](https://eclipse.dev/eclipse/news/4.34/platform.php#edge-browser-improvements))
104102
* [Performance](https://github.com/search?utf8=%E2%9C%93&q=performance+OR+speed+OR+fast+OR+faster+OR+slow+org%3Aeclipse-platform+committer-date%3A2024-09-05..2024-12-10&s=committer-date&o=desc&type=Commits)
105-
* [Improve 'Replace All' performance](https://github.com/eclipse-platform/eclipse.platform.ui/commit/c9b34e44a6fa6d6619916e31f2c1fd0439cb5d71)
106-
* [Delete Files of Directories in parallel](https://github.com/eclipse-platform/eclipse.platform/commit/6d514be2aca4b9be131184b63570fd4351c47c77)
107-
* [Improve performance for large selection](https://github.com/eclipse-platform/eclipse.platform.ui/commit/5fb1fb4d790c1f65dec22997fbb4e38079b6b7a5)
108103
* Faster Quick Search: via [Parallel Quick Search](https://github.com/eclipse-platform/eclipse.platform.ui/commit/8d8da43c0baf9f7dab9ca7f3fcf818d7d62cdd1f) and [QuickTextSearcher avoid streaming](https://github.com/eclipse-platform/eclipse.platform.ui/commit/a43889deed6bece2600069c81d5b2368d2d86137)
109-
* [Search: fail fast for binary file types without opening the file](https://github.com/eclipse-platform/eclipse.platform.ui/commit/4af4df453fe6fb1de6d487975b987931eaeb9605)
110-
* (**Git<!-- [📽️](https://youtu.be/u8llH82TfPc?t=000)-->**)
111-
* **Web<!-- [📽️](https://youtu.be/u8llH82TfPc?t=424)-->**
104+
* ([Search: fail fast for binary file types without opening the file](https://github.com/eclipse-platform/eclipse.platform.ui/commit/4af4df453fe6fb1de6d487975b987931eaeb9605))
105+
* ([Improve 'Replace All' performance](https://github.com/eclipse-platform/eclipse.platform.ui/commit/c9b34e44a6fa6d6619916e31f2c1fd0439cb5d71))
106+
* ([Delete Files of Directories in parallel](https://github.com/eclipse-platform/eclipse.platform/commit/6d514be2aca4b9be131184b63570fd4351c47c77))
107+
* ([Improve performance for large selection](https://github.com/eclipse-platform/eclipse.platform.ui/commit/5fb1fb4d790c1f65dec22997fbb4e38079b6b7a5))
108+
* (**Git<!-- [📽️](https://youtu.be/J-oudd3UWmg?t=000)-->**)
109+
* **Web [📽️](https://youtu.be/J-oudd3UWmg?t=470)**
112110
* TypeScript 5.7 support
113111
* JavaScript/TypeScript tooling (in JavaScript enable validation via `// @ts-check`):
114-
* (https://devblogs.microsoft.com/typescript/announcing-typescript-5-6/#correct-override-checks-on-computed-properties) (`override` in JavaScript via JSDoc: `/** @override */`)
112+
* [Correct `override` checks on computed properties](https://devblogs.microsoft.com/typescript/announcing-typescript-5-6/#correct-override-checks-on-computed-properties) (`override` in JavaScript via JSDoc: `/** @override */`)
115113
* [Checks for never-initialized variables](https://devblogs.microsoft.com/typescript/announcing-typescript-5-7/#checks-for-never-initialized-variables) (TypeScript only)
116114
* (**Under development**)
117115
* ([Initiative 31](https://github.com/swt-initiative31/): Prototyping work for candidate technology evaluation on Eclipse SWT)
@@ -122,4 +120,4 @@
122120

123121

124122
## Publish
125-
*[As YouTube video](https://www.youtube.com/playlist?list=PLnh_8hTD4yvnhXSttuewEKgKkmlIj_ND-) (title prefix until release: `+++Coming on September 11, 2024+++ ` )
123+
*[As YouTube video](https://www.youtube.com/playlist?list=PLnh_8hTD4yvnhXSttuewEKgKkmlIj_ND-) (title prefix until release: `+++Coming on December 4, 2024+++ ` )

narration.odt

59.3 KB
Binary file not shown.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<classpath>
3+
<classpathentry kind="src" output="target/classes" path="src/main/java">
4+
<attributes>
5+
<attribute name="optional" value="true"/>
6+
<attribute name="maven.pomderived" value="true"/>
7+
</attributes>
8+
</classpathentry>
9+
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
10+
<attributes>
11+
<attribute name="maven.pomderived" value="true"/>
12+
<attribute name="optional" value="true"/>
13+
</attributes>
14+
</classpathentry>
15+
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
16+
<attributes>
17+
<attribute name="optional" value="true"/>
18+
<attribute name="maven.pomderived" value="true"/>
19+
<attribute name="test" value="true"/>
20+
</attributes>
21+
</classpathentry>
22+
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
23+
<attributes>
24+
<attribute name="maven.pomderived" value="true"/>
25+
<attribute name="test" value="true"/>
26+
<attribute name="optional" value="true"/>
27+
</attributes>
28+
</classpathentry>
29+
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-23">
30+
<attributes>
31+
<attribute name="maven.pomderived" value="true"/>
32+
</attributes>
33+
</classpathentry>
34+
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
35+
<attributes>
36+
<attribute name="maven.pomderived" value="true"/>
37+
</attributes>
38+
</classpathentry>
39+
<classpathentry kind="output" path="target/classes"/>
40+
</classpath>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/target/
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<projectDescription>
3+
<name>Eclipse 2024-12 Improvements</name>
4+
<comment></comment>
5+
<projects>
6+
</projects>
7+
<buildSpec>
8+
<buildCommand>
9+
<name>org.eclipse.jdt.core.javabuilder</name>
10+
<arguments>
11+
</arguments>
12+
</buildCommand>
13+
<buildCommand>
14+
<name>org.eclipse.m2e.core.maven2Builder</name>
15+
<arguments>
16+
</arguments>
17+
</buildCommand>
18+
</buildSpec>
19+
<natures>
20+
<nature>org.eclipse.jdt.core.javanature</nature>
21+
<nature>org.eclipse.m2e.core.maven2Nature</nature>
22+
</natures>
23+
</projectDescription>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
eclipse.preferences.version=1
2+
encoding//src/main/java=UTF-8
3+
encoding//src/test/java=UTF-8
4+
encoding/<project>=UTF-8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
eclipse.preferences.version=1
2+
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
3+
org.eclipse.jdt.core.compiler.codegen.targetPlatform=23
4+
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5+
org.eclipse.jdt.core.compiler.compliance=23
6+
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7+
org.eclipse.jdt.core.compiler.debug.localVariable=generate
8+
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9+
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
10+
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
11+
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
12+
org.eclipse.jdt.core.compiler.release=enabled
13+
org.eclipse.jdt.core.compiler.source=23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<project xmlns="http://maven.apache.org/POM/4.0.0"
2+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4+
<modelVersion>4.0.0</modelVersion>
5+
<groupId>com.example</groupId>
6+
<artifactId>Eclipse_2024-12_Improvements</artifactId>
7+
<version>0.0.1-SNAPSHOT</version>
8+
<properties>
9+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
10+
<maven.compiler.release>23</maven.compiler.release>
11+
</properties>
12+
<dependencies>
13+
<dependency>
14+
<groupId>org.junit.jupiter</groupId>
15+
<artifactId>junit-jupiter</artifactId>
16+
<version>5.11.3</version>
17+
<scope>test</scope>
18+
</dependency>
19+
</dependencies>
20+
<build>
21+
<plugins>
22+
<plugin>
23+
<groupId>org.apache.maven.plugins</groupId>
24+
<artifactId>maven-compiler-plugin</artifactId>
25+
<version>3.13.0</version>
26+
<configuration>
27+
<compilerArgs>
28+
<arg>--enable-preview</arg>
29+
</compilerArgs>
30+
</configuration>
31+
</plugin>
32+
<plugin>
33+
<groupId>org.apache.maven.plugins</groupId>
34+
<artifactId>maven-surefire-plugin</artifactId>
35+
<version>3.5.2</version>
36+
</plugin>
37+
38+
</plugins>
39+
</build>
40+
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
public class Java23 {
2+
3+
// JEP 467: Markdown Documentation Comments
4+
5+
/// {@return the number of the given char in a given text}
6+
///
7+
/// Examples:
8+
/// - `countCharB("Hello, world!", 'o')` returns 2
9+
/// - `countCharB("strawberry", 'r')` returns 3
10+
///
11+
/// @param text the [String] that must not be `null`
12+
/// @param c the char to count
13+
public long countCharA(String text, char c) {
14+
return text.chars().filter(cc -> cc == c).count();
15+
}
16+
17+
/**
18+
* {@return the number of the given char in a given text}
19+
*
20+
* <p>Examples:</p>
21+
* <ul>
22+
* <li>{@code countCharA("Hello, world!", 'o')} returns 2</li>
23+
* <li>{@code countCharA("strawberry", 'r')} returns 3</li>
24+
* </ul>
25+
*
26+
* @param text the {@link String} that must not be {@code null}
27+
* @param c the char to count
28+
*/
29+
public long countCharB(String text, char c) {
30+
long number= 0;
31+
for (int i = 0; i < text.length(); i++) {
32+
if (text.charAt(i) != c) continue;
33+
number++;
34+
}
35+
return number;
36+
}
37+
38+
}

0 commit comments

Comments
 (0)