Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JEP 458 Support #44464

Closed
slieer opened this issue Feb 27, 2025 · 3 comments
Closed

JEP 458 Support #44464

slieer opened this issue Feb 27, 2025 · 3 comments
Labels
status: feedback-provided Feedback has been provided status: waiting-for-triage An issue we've not yet triaged

Comments

@slieer
Copy link

slieer commented Feb 27, 2025

JEP 458: Launch Multi-File Source-Code Programs
When will Spring boot support code files such as Controller/Service to run directly without compiling?

@spring-projects-issues spring-projects-issues added the status: waiting-for-triage An issue we've not yet triaged label Feb 27, 2025
@wilkinsona
Copy link
Member

What do you believe would need to be done to support JEP 458?

If you're happy with the limitations of JEP 458, such as the need to assemble the classpath manually, I believe it should just work. For example, here's a minimal app starting with Java 23:

 java -classpath '*' com/example/jep_458/Jep458Application.java                                                   

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/

 :: Spring Boot ::                (v3.4.3)

[2025-02-27 14:55:15.798] - 48242 INFO [main] --- com.example.jep_458.Jep458Application: Starting Jep458Application using Java 17.0.13 with PID 48242 (/Users/aw036093/Downloads/jep-458/src/main/java/com/example/jep_458/Jep458Application.java started by aw036093 in /Users/aw036093/Downloads/jep-458/src/main/java)
[2025-02-27 14:55:15.815] - 48242 INFO [main] --- com.example.jep_458.Jep458Application: No active profile set, falling back to 1 default profile: "default"
[2025-02-27 14:55:16.012] - 48242 INFO [main] --- com.example.jep_458.Jep458Application: Started Jep458Application in 0.324 seconds (process running for 0.629)

This relies upon the following files:

.
├── com
│   └── example
│       └── jep_458
│           └── Jep458Application.java
├── spring-aop-6.2.3.jar
├── spring-beans-6.2.3.jar
├── spring-boot-3.4.3.jar
├── spring-boot-autoconfigure-3.4.3.jar
├── spring-context-6.2.3.jar
├── spring-core-6.2.3.jar
├── spring-expression-6.2.3.jar
└── spring-jcl-6.2.3.jar

@wilkinsona wilkinsona added the status: waiting-for-feedback We need additional information before we can continue label Feb 27, 2025
@slieer
Copy link
Author

slieer commented Mar 1, 2025

Thank you so much for your quick reply!

JEP 458 allows us to develop quickly without manual compilation or packaging. There is still value in small projects or projects with small concurrency, and there are many scenarios for this scenario. There is also value in low-code combined with some high-code scenarios.

@spring-projects-issues spring-projects-issues added status: feedback-provided Feedback has been provided and removed status: waiting-for-feedback We need additional information before we can continue labels Mar 1, 2025
@slieer
Copy link
Author

slieer commented Mar 1, 2025

That's great! I also passed the initial verification.

slieer@slieer-pc:/opt/workspace/gs-accessing-data-rest/complete/src/main/java$ pwd
/opt/workspace/gs-accessing-data-rest/complete/src/main/java
slieer@slieer-pc:/opt/workspace/gs-accessing-data-rest/complete/src/main/java$ dir
accessors-smart-2.5.2.jar jackson-datatype-jsr310-2.18.2.jar log4j-to-slf4j-2.24.3.jar spring-boot-starter-web-3.4.3.jar
android-json-0.0.20131108.vaadin1.jar jackson-module-parameter-names-2.18.2.jar logback-classic-1.5.16.jar spring-boot-test-3.4.3.jar
angus-activation-2.0.2.jar jakarta.activation-api-2.1.3.jar logback-core-1.5.16.jar spring-boot-test-autoconfigure-3.4.3.jar
antlr4-runtime-4.13.0.jar jakarta.annotation-api-2.1.1.jar micrometer-commons-1.14.4.jar spring-context-6.2.3.jar
apiguardian-api-1.1.2.jar jakarta.inject-api-2.0.1.jar micrometer-observation-1.14.4.jar spring-core-6.2.3.jar
asm-9.7.1.jar jakarta.persistence-api-3.1.0.jar mockito-core-5.14.2.jar spring-data-commons-3.4.3.jar
aspectjweaver-1.9.22.1.jar jakarta.transaction-api-2.0.1.jar mockito-junit-jupiter-5.14.2.jar spring-data-jpa-3.4.3.jar
assertj-core-3.26.3.jar jakarta.xml.bind-api-4.0.2.jar objenesis-3.3.jar spring-data-rest-core-4.4.3.jar
awaitility-4.2.2.jar jandex-3.2.0.jar opentest4j-1.3.0.jar spring-data-rest-webmvc-4.4.3.jar
byte-buddy-1.15.11.jar jaxb-core-4.0.5.jar slf4j-api-2.0.16.jar spring-expression-6.2.3.jar
byte-buddy-agent-1.15.11.jar jaxb-runtime-4.0.5.jar snakeyaml-2.3.jar spring-hateoas-2.4.1.jar
classmate-1.7.0.jar jboss-logging-3.6.1.Final.jar spring-aop-6.2.3.jar spring-jcl-6.2.3.jar
com jsonassert-1.5.3.jar spring-aspects-6.2.3.jar spring-jdbc-6.2.3.jar
evo-inflector-1.3.jar json-path-2.9.0.jar spring-beans-6.2.3.jar spring-orm-6.2.3.jar
h2-2.3.232.jar json-smart-2.5.2.jar spring-boot-3.4.3.jar spring-plugin-core-3.0.0.jar
hamcrest-2.2.jar jul-to-slf4j-2.0.16.jar spring-boot-autoconfigure-3.4.3.jar spring-test-6.2.3.jar
hibernate-commons-annotations-7.0.3.Final.jar junit-jupiter-5.11.4.jar spring-boot-starter-3.4.3.jar spring-tx-6.2.3.jar
hibernate-core-6.6.8.Final.jar junit-jupiter-api-5.11.4.jar spring-boot-starter-data-jpa-3.4.3.jar spring-web-6.2.3.jar
HikariCP-5.1.0.jar junit-jupiter-engine-5.11.4.jar spring-boot-starter-data-rest-3.4.3.jar spring-webmvc-6.2.3.jar
istack-commons-runtime-4.1.2.jar junit-jupiter-params-5.11.4.jar spring-boot-starter-jdbc-3.4.3.jar tomcat-embed-core-10.1.36.jar
jackson-annotations-2.18.2.jar junit-platform-commons-1.11.4.jar spring-boot-starter-json-3.4.3.jar tomcat-embed-el-10.1.36.jar
jackson-core-2.18.2.jar junit-platform-engine-1.11.4.jar spring-boot-starter-logging-3.4.3.jar tomcat-embed-websocket-10.1.36.jar
jackson-databind-2.18.2.jar libs spring-boot-starter-test-3.4.3.jar txw2-4.0.5.jar
jackson-datatype-jdk8-2.18.2.jar log4j-api-2.24.3.jar spring-boot-starter-tomcat-3.4.3.jar xmlunit-core-2.10.0.jar
slieer@slieer-pc:/opt/workspace/gs-accessing-data-rest/complete/src/main/java$ /home/slieer/.jdks/corretto-23.0.2/bin/java -classpath '*' com/example/accessingdatarest/AccessingDataRestApplication.java

. ____ _ __ _ _
/\ / ' __ _ () __ __ _ \ \ \
( ( )_
_ | '_ | '| | ' / ` | \ \ \
\/ )| |)| | | | | || (| | ) ) ) )
' |
| .__|| ||| |_, | / / / /
=========|
|==============|/=////

:: Spring Boot :: (v3.4.3)

2025-03-01T10:11:14.071+08:00 INFO 329256 --- [ main] c.e.a.AccessingDataRestApplication : Starting AccessingDataRestApplication using Java 23.0.2 with PID 329256 (/opt/workspace/gs-accessing-data-rest/complete/src/main/java/com/example/accessingdatarest/AccessingDataRestApplication.java started by slieer in /opt/workspace/gs-accessing-data-rest/complete/src/main/java)
2025-03-01T10:11:14.076+08:00 INFO 329256 --- [ main] c.e.a.AccessingDataRestApplication : No active profile set, falling back to 1 default profile: "default"
2025-03-01T10:11:14.742+08:00 INFO 329256 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2025-03-01T10:11:14.763+08:00 INFO 329256 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 11 ms. Found 0 JPA repository interfaces.
2025-03-01T10:11:15.358+08:00 INFO 329256 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8080 (http)
2025-03-01T10:11:15.379+08:00 INFO 329256 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2025-03-01T10:11:15.379+08:00 INFO 329256 --- [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.36]
2025-03-01T10:11:15.421+08:00 INFO 329256 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2025-03-01T10:11:15.422+08:00 INFO 329256 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1277 ms
2025-03-01T10:11:15.590+08:00 INFO 329256 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2025-03-01T10:11:15.779+08:00 INFO 329256 --- [ main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection conn0: url=jdbc:h2:mem:b07462d8-51bf-41f2-95c8-b3412035fcc7 user=SA
2025-03-01T10:11:15.781+08:00 INFO 329256 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
2025-03-01T10:11:15.845+08:00 INFO 329256 --- [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]
2025-03-01T10:11:15.891+08:00 INFO 329256 --- [ main] org.hibernate.Version : HHH000412: Hibernate ORM core version 6.6.8.Final
2025-03-01T10:11:15.920+08:00 INFO 329256 --- [ main] o.h.c.internal.RegionFactoryInitiator : HHH000026: Second-level cache disabled
2025-03-01T10:11:16.163+08:00 INFO 329256 --- [ main] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer
2025-03-01T10:11:16.233+08:00 INFO 329256 --- [ main] org.hibernate.orm.connections.pooling : HHH10001005: Database info:
Database JDBC URL [Connecting through datasource 'HikariDataSource (HikariPool-1)']
Database driver: undefined/unknown
Database version: 2.3.232
Autocommit mode: undefined/unknown
Isolation level: undefined/unknown
Minimum pool size: undefined/unknown
Maximum pool size: undefined/unknown
2025-03-01T10:11:16.449+08:00 INFO 329256 --- [ main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)
2025-03-01T10:11:16.453+08:00 INFO 329256 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2025-03-01T10:11:16.497+08:00 WARN 329256 --- [ main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2025-03-01T10:11:17.305+08:00 INFO 329256 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 8080 (http) with context path '/'
2025-03-01T10:11:17.316+08:00 INFO 329256 --- [ main] c.e.a.AccessingDataRestApplication : Started AccessingDataRestApplication in 3.642 seconds (process running for 4.606)

@slieer slieer closed this as completed Mar 1, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
status: feedback-provided Feedback has been provided status: waiting-for-triage An issue we've not yet triaged
Projects
None yet
Development

No branches or pull requests

3 participants