你好,我是看山。
本文收录在 《从小工到专家的 Java 进阶之旅》 系列专栏中。
概述
从 2017 年开始,Java 版本更新遵循每六个月发布一次的节奏,LTS版本则每两年发布一次,以快速验证新特性,推动 Java 的发展。
一些可能不会用到的特性
web服务器jwebserver(Java 18)
为开发者提供一个轻量级、简单易用的 HTTP 服务器,通过命令行工具jwebserver
可以启动一个最小化的静态 Web 服务器,这个服务器仅支持静态资源的访问,不支持 CGI(Common Gateway Interface)或类似 servlet 的功能,主要用于原型制作、测试和开发环境中的静态文件托管与共享。
它的应用场景包括:
- 原型开发:由于其简单易用的特性,jwebserver 可以作为快速原型开发工具,帮助开发者在短时间内搭建起一个可以访问静态资源的 Web 服务。这对于需要验证某个功能或概念的初期阶段非常有用。
- 快速部署:对于一些小规模的应用或者临时性的项目,使用 jwebserver 可以快速启动并运行一个简单的 Web 服务,而无需复杂的配置和环境搭建。这使得开发者能够迅速将想法转化为实际的可访问服务。
- 学习与教育:jwebserver 提供了一个直观的平台,让初学者可以轻松上手 Java Web 开发。通过简单的命令行操作,用户可以快速理解 Web 服务器的工作原理及其基本配置。
- 测试与调试:在进行 Web 应用的测试和调试时,jwebserver 可以作为一个独立的工具来提供静态文件的访问服务,从而方便开发者对应用进行测试和调试。
- 本地开发环境:在本地开发环境中,jwebserver 可以替代传统的 Web 服务器如 Apache Tomcat 或 Nginx,为开发者提供一个轻量级的选择,以减少系统资源的占用。
我们可以简单试一下,在当前目录编写index.html:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<h2>欢迎参观</h2>
<h3><a href="https://www.howardliu.cn/">看山的小屋 howardliu.cn</a></h3>
<p>
一起<strong>开心</strong>学技术
</p>
<p>
让我们一起<strong>扬帆起航</strong>
</p>
</body>
</html>
运行jwebserver
命令:
$ ./bin/jwebserver
Binding to loopback by default. For all interfaces use "-b 0.0.0.0" or "-b ::".
Serving /Users/liuxinghao/Library/Java/JavaVirtualMachines/temurin-18.0.2.1/Contents/Home and subdirectories on 127.0.0.1 port 8000
URL http://127.0.0.1:8000/
打开[http://127.0.0.1:8000/](http://127.0.0.1:8000/)
就可以直接看到index.html的效果:
jwebserver
还支持指定地址和端口等参数,具体使用可以通过命令查看:
$ ./bin/jwebserver -h
Usage: jwebserver [-b bind address] [-p port] [-d directory]
[-o none|info|verbose] [-h to show options]
[-version to show version information]
Options:
-b, --bind-address - Address to bind to. Default: 127.0.0.1 (loopback).
For all interfaces use "-b 0.0.0.0" or "-b ::".
-d, --directory - Directory to serve. Default: current directory.
-o, --output - Output format. none|info|verbose. Default: info.
-p, --port - Port to listen on. Default: 8000.
-h, -?, --help - Prints this help message and exits.
-version, --version - Prints version information and exits.
隐式声明的类和实例方法(预览特性)
隐式声明的类和实例方法的目标是简化 Java 语言,使得学生和初学者可以更容易地编写他们的第一个程序,而无需理解为大型程序设计的复杂语言特性。
无论学习哪门语言,第一课一定是打印Hello, World!
,Java中的写法是:
public class HelloWorld {
public static void main(String[] args) {
System.out.println ("Hello, World!");
}
}
如果是第一次接触,一定会有很多疑问,public
干啥的,main
方法的约定参数args
是什么鬼?然后老师就说,这就是模板,照着抄就行,不这样写不运行。
现在可以简化为:
class HelloWorld {
void main() {
System.out.println ("Hello, World!");
}
}
我们还可以这样写:
String greeting() { return "Hello, World!"; }
void main() {
System.out.println(greeting());
}
main
方法直接简化为名字和括号,甚至连类也不需要显性定义了。虽然看起来没啥用,但是在JShell中使用,就比较友好了。
本次预览新增了三个IO操作方法:
public static void println(Object obj);
public static void print(Object obj);
public static String readln(String prompt);
想要快速实现控制台操作,可以这样写了:
void main() {
String name = readln("请输入姓名: ");
print("很高兴见到你, ");
println(name);
}
作为一个老程序猿,也不得不哇塞一下。
文末总结
想要了解各版本的详细特性,可以从从小工到专家的 Java 进阶之旅 系列专栏中查看。
青山不改,绿水长流,我们下次见。
推荐阅读
- 从小工到专家的 Java 进阶之旅
- 一文掌握 Java8 Stream 中 Collectors 的 24 个操作
- 一文掌握 Java8 的 Optional 的 6 种操作
- 使用 Lambda 表达式实现超强的排序功能
- Java8 的时间库(1):介绍 Java8 中的时间类及常用 API
- Java8 的时间库(2):Date 与 LocalDate 或 LocalDateTime 互相转换
- Java8 的时间库(3):开始使用 Java8 中的时间类
- Java8 的时间库(4):检查日期字符串是否合法
- Java8 的新特性
- Java9 的新特性
- Java10 的新特性
- Java11 中基于嵌套关系的访问控制优化
- Java11 的新特性
- Java12 的新特性
- Java13 的新特性
- Java14 的新特性
- Java15 的新特性
- Java16 的新特性
- Java17 的新特性
- Java18 的新特性
- Java19 的新特性
- Java20 的新特性
- Java21 的新特性
- Java22 的新特性
- Java23 的新特性
- Java24 的新特性
你好,我是看山。游于码界,戏享人生。如果文章对您有帮助,请点赞、收藏、关注。我还整理了一些精品学习资料,关注公众号「看山的小屋」,回复“资料”即可获得。
- 个人主页:https://www.howardliu.cn
- 个人博文:从Java8到Java23值得期待的x个特性(6):一些可能不会用到的特性
- CSDN 主页:https://kanshan.blog.csdn.net/
- CSDN 博文:从Java8到Java23值得期待的x个特性(6):一些可能不会用到的特性