JDK新增史上最无用提案!竟是为了简化Hello World?

news/2024/11/17 12:58:55/

0f7f6c41843e2c2677e08db7215f8f2f.jpeg

前两天JDK 20更新了,很多人表示很失望,但是我万万没想到的是,还有更令人失望的。

OpenJDK最近又增加了一个新提案,JEP 445,这个提案的主要内容是要简化Hello World的写法。并且该新特性即将在Java 21中作为预览功能推出。

a74790780929fd81dc995513981130a0.png

这个提案的作者认为,Java中写一个Hello World太麻烦了:

public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!");}
}

这对于初学者来说不够友好,他觉得,Hello World应该简单点,直接就像这样写:

class HelloWorld { void main() { System.out.println("Hello, World!");}
}

或者这样写:

void main() {System.out.println("Hello, World!");
}

作者表示,这个提案目的是为了:

  • 为 Java 提供平滑的入口,方便教育工作者可以循序渐进地介绍编程的概念。

  • 帮助学生以简洁的方式编写基本入门程序,并随着其 Java 技能增长,优雅地扩展代码。

  • 减少编写简单程序(例如脚本和命令行实用程序)的仪式。

  • 不要单独介绍 Java 的初学者方言。

  • 不引入单独的初学者工具链;编译和运行学生的程序,使用的工具应该和生产环境的 Java 程序相同。

这就咋说呢,是有很多人吐槽Java复杂,可是问题是,他的复杂性仅仅在于这一个小小的Hello World吗?真的会有人关心Hello World复不复杂吗?

如果一个初学者,连这几行代码都嫌复杂的话,那也没啥必要继续学下去了吧?

而且现在各种IDE都很成熟了,psvm、sout,这不就写完了么,哪复杂了?

很多人吐槽复杂,是因为语法规范太多、并发模型复杂,这和Hello world有个啥的关系呢?

现在Java每半年一个新版本,但是大部分人使用的还是1.8 ,原因是啥这些专家没点那啥数么,从JDK 9 到 JDK 20。

10多个版本了,加一起都没有1.8的变化大,在我看来真正有用的也就一个虚拟线程。

2be3367e9faf040af387b9696f2d0ec9.png

各个版本都在不断地加语法糖,整的和kotlin、groovy越来越像。

可是,如果我想简单一点,我直接就用Groovy了不好么?


http://www.ppmy.cn/news/46194.html

相关文章

4.mybatis-plus-常用注解

1.TableName 描述:表名注解,标识实体类对应的表使用位置:实体类 将数据库中user表更名为mp_user TableName("mp_user") public class User {private Long id;private String name;private Integer age;private String email; }# 或…

Spring MVC Bean加载控制

回顾一下我们一般写的项目包括那些包吧: config目录存入的是配置类,写过的配置类有: ServletContainersInitConfigSpringConfigSpringMvcConfigJdbcConfigMybatisConfig controller目录存放的是SpringMVC的controller类service目录存放的是service接口和实现类dao目…

Nacos系列-Nacos服务注册与发现

服务注册与发现 1.故事背景2.服务注册2.1服务注册原理2.2服务注册实现 3服务发现3.1 服务发现原理3.2 服务发现实现3.3 LoadBalanced注解 总结提升 1.故事背景 上文我们讲到了Nacos的配置中心,介绍了什么是Nacos的配置中心,以及它的相关概念和使用方法。…

动力节点Springsecurity笔记01-05认证入门

1 问题 如何保护我们的程序? 1.1 创建code目录 目的:后面的security工程均在此目录下学习 创建code目录,并使用idea打开 1.2 不使用安全框架的springboot web程序 1.2.1 新建子模块springboot-01-hello [外链图片转存失败,源站可能有防盗…

深入剖析 Qt QMultiMap :原理、应用与技巧

目录标题 引言QMultiMap 的基本用法接口的用途和实际应用场景综合示例展示QMultiMap的所有用法 迭代器:遍历 QMultiMap 中的元素(Iterators: Traversing Elements in QMultiMap )QMultiMap 的高级用法QMultiMap 的优点和局限性优点局限性 QMu…

一起读源码 —— Fastjson 的核心方法及其实现原理

源码介绍 Fastjson 是阿里巴巴开源的一个 Java 工具库,它常常被用来完成 Java 的对象与 JSON 格式的字符串的相互转化。 此文读的源码是撰写此文时 Fastjson 的最新的发布版本,即 1.2.83 下载源码 请前去 github 找到 release 最新版下载后解压&…

JUC源码系列-ReentrantLock独占锁的释放

前言 开始之前先提一句, JAVA的内置锁在退出临界区之后是会自动释放锁的, 但是ReentrantLock这样的显式锁是需要自己显式的释放的, 所以在加锁之后一定不要忘记在finally块中进行显式的锁释放: Lock lock new ReentrantLock(); ... lock.lock(); try {// 更新对象//捕获异常…

IOC容器——Bean

IOC容器——Bean Bean配置name别名属性Bean作用范围scopeBean的实例化构造方法示例化静态工厂实例化实例工厂与FactoryBean实例工厂FactoryBean bean的生命周期 Bean配置 name别名属性 Bean ID 唯一,而关于Spring别名,我们可以在配置文件中使用name来定…