Skip to content

Commit 3b6645d

Browse files
committed
Eclipse 2025-03: Update features to show; add narration and sample code
1 parent bceb847 commit 3b6645d

40 files changed

+235
-400
lines changed

README.md

+33-30
Large diffs are not rendered by default.

intro_outro_thumbnail.svg

+19-17
Loading

narration.odt

2.61 KB
Binary file not shown.

reset_workspace_and_installation.bat

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
set IDE=java-2024-09
1+
set IDE=java-2025-03
22
set REPO=sample
33

44
set ECLIPSE_DIR=%USERPROFILE%\eclipse\%IDE%
@@ -14,6 +14,7 @@ set REPO_ZIP=%USERPROFILE%\git\%REPO%.7z
1414
::echo|set/p=^^^<project.build.sourceEncoding^^^>UTF-8^^^</project.build.sourceEncoding^^^>|clip
1515
::echo|set/p=""C:\Program Files\Java\jdk-20-ea\bin\javac^" -d . src\main\java\BytecodeSample.java"|clip
1616
::echo|set/p="C:\Program Files\Eclipse Adoptium\jdk-22.0.1.8-hotspot"|clip
17+
(echo if ^^^(this == null^^^) return null;&echo String str= "";&echo for ^^^(int i = 0; i ^^^< this.length; i++^^^) {&echo ^^^ str+= "["+ i + "]: " + this[i] + "\n";&echo }&echo return str;) | clip
1718

1819
dir "%ECLIPSE_DIR%\p2"
1920

@@ -22,7 +23,7 @@ IF NOT exist "%ECLIPSE_DIR%" (echo Eclipse installation missing: %ECLIPSE_DIR% &
2223
IF NOT exist "%ECLIPSE_P2_CONFIG_ZIP%" (echo Backup of Eclipse p2/configuration missing: %ECLIPSE_P2_CONFIG_ZIP% && pause && exit 1)
2324
IF NOT exist "%ECLIPSE_WORKSPACE%\.metadata" (echo Workspace missing: %ECLIPSE_WORKSPACE% && pause && exit 1)
2425
::IF NOT exist "%ECLIPSE_WORKSPACE_ZIP%" (echo Backup of workspace missing: %ECLIPSE_WORKSPACE_ZIP% && pause && exit 1)
25-
IF NOT exist "%REPO_DIR%\.git" (echo Git repository missing: %REPO_DIR% && pause && exit 1)
26+
::IF NOT exist "%REPO_DIR%\.git" (echo Git repository missing: %REPO_DIR% && pause && exit 1)
2627

2728
:: restore Git repository
2829
::rmdir /s /q "%REPO_DIR%"

sample_code/Eclipse_2024-12_Improvements/.classpath renamed to sample_code/Eclipse 2025-03 Improvements/.classpath

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
<attribute name="optional" value="true"/>
2727
</attributes>
2828
</classpathentry>
29-
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-23">
29+
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-21">
3030
<attributes>
3131
<attribute name="maven.pomderived" value="true"/>
3232
</attributes>
@@ -37,4 +37,4 @@
3737
</attributes>
3838
</classpathentry>
3939
<classpathentry kind="output" path="target/classes"/>
40-
</classpath>
40+
</classpath>

sample_code/Eclipse_2024-12_Improvements/.project renamed to sample_code/Eclipse 2025-03 Improvements/.project

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<projectDescription>
3-
<name>Eclipse 2024-12 Improvements</name>
3+
<name>Eclipse 2025-03 Improvements</name>
44
<comment></comment>
55
<projects>
66
</projects>
@@ -20,4 +20,4 @@
2020
<nature>org.eclipse.jdt.core.javanature</nature>
2121
<nature>org.eclipse.m2e.core.maven2Nature</nature>
2222
</natures>
23-
</projectDescription>
23+
</projectDescription>
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
eclipse.preferences.version=1
22
encoding//src/main/java=UTF-8
3-
encoding//src/test/java=UTF-8
3+
encoding//src/main/resources=UTF-8
44
encoding/<project>=UTF-8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
eclipse.preferences.version=1
2+
org.eclipse.jdt.core.compiler.codegen.targetPlatform=21
3+
org.eclipse.jdt.core.compiler.compliance=21
4+
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
5+
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
6+
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
7+
org.eclipse.jdt.core.compiler.release=enabled
8+
org.eclipse.jdt.core.compiler.source=21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<!--
2+
Copyright (c) 2025 Holger Voormann and others.
3+
4+
This program and the accompanying materials
5+
are made available under the terms of the Eclipse Public License 2.0
6+
which accompanies this distribution, and is available at
7+
https://www.eclipse.org/legal/epl-2.0/
8+
9+
SPDX-License-Identifier: EPL-2.0
10+
-->
11+
<project xmlns="http://maven.apache.org/POM/4.0.0"
12+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
13+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
14+
<modelVersion>4.0.0</modelVersion>
15+
<groupId>com.example</groupId>
16+
<artifactId>Eclipse_2025-03_Improvements</artifactId>
17+
<version>0.0.1-SNAPSHOT</version>
18+
<properties>
19+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
20+
<maven.compiler.release>21</maven.compiler.release>
21+
</properties>
22+
<build>
23+
<plugins>
24+
<plugin>
25+
<groupId>org.apache.felix</groupId>
26+
<artifactId>maven-bundle-plugin</artifactId>
27+
<version>6.0.0</version>
28+
<extensions>true</extensions>
29+
<configuration>
30+
<instructions>
31+
32+
<!--
33+
New: completions for `bnd-maven-plugin` and `felix-bundle-plugin`
34+
-->
35+
36+
37+
</instructions>
38+
</configuration>
39+
</plugin>
40+
</plugins>
41+
</build>
42+
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
2+
sealed abstract class Issue permits Bug, FeatureRequest {
3+
4+
// ...
5+
6+
}
7+
8+
final class Bug extends Issue {}
9+
final class FeatureRequest extends Issue {}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import java.util.*;
2+
3+
// see https://github.com/eclipse-jdt/eclipse.jdt.core/issues/3590
4+
class JavacBoom200 {
5+
List<Map.Entry<String, String>> data = Arrays.asList(
6+
Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"),
7+
Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"),
8+
Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"),
9+
Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"),
10+
Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"),
11+
Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"),
12+
Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"),
13+
Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"),
14+
Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"),
15+
Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"),
16+
17+
Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"),
18+
Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"),
19+
Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"),
20+
Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"),
21+
Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"),
22+
Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"),
23+
Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"),
24+
Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"),
25+
Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"),
26+
Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value"), Map.entry("key", "value")
27+
);
28+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
import java.awt.Point;
2+
import java.util.ArrayList;
3+
import java.util.List;
4+
import java.util.regex.Pattern;
5+
class Sample {
6+
7+
void report(Issue issue) {
8+
9+
}
10+
11+
// Preferences: "Java > Editor > Folding: Extended folding"
12+
public String[] split(String regex, CharSequence input, int limit, boolean withDelimiters) {
13+
int matchCount = 0;
14+
int index = 0;
15+
boolean matchLimited = limit > 0;
16+
var matchList = new ArrayList<String>();
17+
var m = Pattern.compile(regex).matcher(input);
18+
19+
// Add segments before each match found
20+
while(m.find()) {
21+
if (!matchLimited || matchCount < limit - 1) {
22+
if (index == 0 && index == m.start() && m.start() == m.end()) {
23+
// no empty leading substring included for zero-width match
24+
// at the beginning of the input char sequence.
25+
continue;
26+
}
27+
String match = input.subSequence(index, m.start()).toString();
28+
matchList.add(match);
29+
index = m.end();
30+
if (withDelimiters) {
31+
matchList.add(input.subSequence(m.start(), index).toString());
32+
}
33+
++matchCount;
34+
} else if (matchCount == limit - 1) { // last one
35+
String match = input.subSequence(index, input.length()).toString();
36+
matchList.add(match);
37+
index = m.end();
38+
++matchCount;
39+
}
40+
}
41+
42+
// If no match was found, return this
43+
if (index == 0)
44+
return new String[] {input.toString()};
45+
46+
// Add remaining segment
47+
if (!matchLimited || matchCount < limit)
48+
matchList.add(input.subSequence(index, input.length()).toString());
49+
50+
// Construct result
51+
int resultSize = matchList.size();
52+
if (limit == 0) {
53+
while (resultSize > 0 && matchList.get(resultSize-1).isEmpty()) {
54+
resultSize--;
55+
}
56+
}
57+
String[] result = new String[resultSize];
58+
return matchList.subList(0, resultSize).toArray(result);
59+
}
60+
61+
// Variables view: compare, exceptions with stack traces and custom formatters for primitives
62+
public static void main(String... args) {
63+
sample(1, 2, 3);
64+
}
65+
public static void sample(int... numbers) {
66+
67+
// lists
68+
var list1 = List.of("aaa", "bbb", "ccc");
69+
var list2 = new ArrayList<String>(list1);
70+
var list3 = new ArrayList<String>();
71+
list2.remove(1);
72+
list3.addAll(list1);
73+
74+
// objects
75+
var a = new Point();
76+
var b = new Point();
77+
a.x = b.x = 2;
78+
b.y = 7;
79+
80+
try {
81+
System.out.println(numbers[3]);
82+
} catch (Exception e) {
83+
System.out.println(e.getMessage());
84+
}
85+
86+
}
87+
88+
}

sample_code/Eclipse 2025-03 Improvements/src/main/resources/.gitkeep

Whitespace-only changes.

sample_code/Eclipse 2025-03 Improvements/src/test/java/.gitkeep

Whitespace-only changes.

sample_code/Eclipse 2025-03 Improvements/src/test/resources/.gitkeep

Whitespace-only changes.

sample_code/Eclipse_2024-12_Improvements/.gitignore

-1
This file was deleted.

sample_code/Eclipse_2024-12_Improvements/.settings/org.eclipse.jdt.core.prefs

-13
This file was deleted.

sample_code/Eclipse_2024-12_Improvements/pom.xml

-40
This file was deleted.

0 commit comments

Comments
 (0)