2022

近日,New Relic发布了最新的2022 Java生态系统报告,这份报告可以帮助我们深入的了解Java体系的最新使用情况,下面就一起来看看2022年,Java发展的怎么样了,还是Java 8 YYDS吗? Java 11成为新的标准在2020年的时候,Java 11已经推出了1年多,但当时Java 8的占有率高达84.48%。2年过去了,Java 11上生产的比例第一次超过Java 8,占有率已经达到了48.44%。曾今的霸主Java 8几乎跌掉了一半,以46.45%占据第二。 而大势所趋的、整个Java生态都在拥抱的Java 17在排行榜上还是处于比较低的位置。这个其实还是意料之中的,因为生态的支持还需要一定时间的演进,比如Spring这个Java生态的大基座,对于Java 17的重要支持还要等到今年年底的Spring Boot 3发布(对这部分感兴趣的小伙伴记得关注我,公...

今天一大早,群里(点击加群)有小伙伴问了这样的一个问题: 在我们使用IDEA开发项目的时候,通常都会有很多配置项需要去设置,比如对于Java项目来说,一般就包含:JDK配置、Maven配置等。那么如果想要设置一个默认的项目配置的话,要如何做呢? 先来找到入口,在File菜单中找到New Projects Setup菜单项,细节如下图所示: 这里的几个功能都是用来配置新建项目时要做的一些默认选项。 #新建项目的基础默认配置通过Preferences for New Projects...可以配置新建项目的基础默认配置,包括外观、编辑器、版本控制、构建、执行、部署等一系列的基础内容: 这里也包括群友(点击加群)问的,如何设置默认Maven版本的配置,就可以在这里通过搜索Maven来找到配置的地方: #新建项目的运行模版第二个菜单项Run Configuration Templat...

在这次的Java 18中,新增了一个@snipppet标签,主要用于JavaDoc中需要放示例代码的场景。其实在Java 18之前,已经有一个@code标签,可以用于在JavaDoc中编写小段的代码内容,比如在之前介绍Simple Web Server视频中,提到的这段样例代码,就是用@code标签来写的: * <p> Example of a simple file server:* <pre>{@code* var addr = new InetSocketAddress(8080);* var server = SimpleFileServer.createFileServer(addr, Path.of("/some/path"), OutputLevel.INFO);* server.start();* }<...

本期视频:https://www.bilibili.com/video/BV1YY4y1a7vG 在Java 18中,将UTF-8指定为标准Java API的默认字符集。有了这一更改,依赖于默认字符集的API将在所有实现、操作系统、区域设置和配置中保持一致。 做这一更改的主要目标: 当Java程序的代码依赖于默认字符集时,使其更具可预测性和可移植性。 阐明标准Java API在哪里使用默认字符集。 在整个标准Java API中对UTF-8进行标准化,但控制台I/O除外。 需要注意的是,这一更改的目标并不是定义新的标准Java API或受支持的JDK API,尽管这项工作可能会发现新的便利方法可能会使现有的API更易于使用,这一更改并不是要弃用或删除依赖默认字符集的标准Java API。 动机用于读写文件和处理文本的标准Java API允许将字符集作为参数传递。字符集控制Java编...

昨天分享了Java 18 新特性:简单Web服务器的jwebserver命令行功能。今天换一种方式,使用Java代码来实现一个静态资源服务器。 详细步骤我录了个视频放到B站了,感兴趣的小伙伴可以点击查看Java 18 新特性:Simple Web Server(2) 代码比较简单,直接贴出来了: public class Main { public static void main(String[] args) { System.out.println("Hello world!"); var addr = new InetSocketAddress(9000); var server = SimpleFileServer.createFileServer( addr, Path.of(...

在今年3月下旬的时候,Java已经更新到了18。接下来会挑一些有意思的内容,以文章和视频的方式来给大家介绍和学习。 如果要第一时间获得内容更新,对文章形式感兴趣的小伙伴可以关注我的博客或者公众号(程序猿DD),对视频形式感兴趣的可以关注我的B站或视频号(程序猿DD)。 本篇内容对应视频已完成录制,点击查看:Java 18 新特性:Simple Web Server(1) 简单Web服务器:jwebserverJEP 408: Simple Web Server,是这次Java 18推出的一个比较独立的全新功能点。我们可以通过命令行工具来启动一个提供静态资源访问的迷你Web服务器。 该工具的定位官方文档中说了一堆: 这里我简单总结几点,方便大家理解: 构建目的是应用于测试与教学,不是为了替代Jetty、Nginx等高级服务器 不提供身份验证、访问控制或加密等安全功能 仅支持HTTP...

昨天群里(点击加群)有小伙伴问,换了M1芯片的Macbook Pro之后,IDEA就一直很卡的。正好前段时间,我也换了最新的MacBook Pro,也碰到了类似的问题。 这里就简单讲一下换到M1平台后,使用IDEA要注意的两个点: IDEA版本的选择第一个要注意的点是IDEA版本要注意下, 不要选择默认的Intel版本。 JDK版本的选择在下载JDK的时候,一定要选择arrch64的JDK

抛异常相信大家都会吧?只需要这样就可以了: throw new RuntimeException("didispace.com"); 但是,在开发过程中有一些情况,我们需要测试程序对异常的处理逻辑是否正确,这个时候就需要我们在程序运行时主动的抛出异常才会触发相关逻辑来验证正确性,比较常见的场景有:事务是否会回滚、Web层的统一异常处理等等。 这个时候,你是如何去制造异常,来支持你的调试呢? 下面我就以前写的Spring Boot教程里一个事务处理的例子为场景,给大家看看一些常见的调试操作以及今天要讲的更优雅的操作。 案例说明先介绍下场景,这是一个用Spring Data JPA实现的数据库操作案例,右侧UserService里一个事务操作,里面含有5句User表的插入语句。 因为@Transactional注解存在,所以saveSomeUsers函数下的数据插入要么都成功,要么都失...

大家在Debug程序的时候,是否遇到过因为“下一步”按太快,而导致跳过了想要深入分析的那段代码?是不是很想要有“回到上一步”这样的操作呢? 在IDEA中就提供了一个帮助你回退代码的机会,但这个方法并不是万能的。好了,下面就来具体说说这个功能的使用! 使用Reset Frame回退操作不知道你在Debug的时候,是否有注意过下图标出的按钮Reset Frame,这就是今天要介绍的主角。 什么情况不能回退比如:下面这样的顺序结构,是无法会退的: void test() { int a = 1; int b = 2; int c = a + b; System.out.println(c);} 什么情况可以回退再来看看下面这种情况: void test2() { int a = 1; int b = 2; int c...

作为一名开发者,相信大部分人都喜欢用Markdown来写文章和写文档。 如果你经常用开源项目或者自己维护开源项目,肯定对于项目下的README文件也相当熟悉了吧,通常我们会在这里介绍项目的功能、如何使用等内容。 对于一些需要用命令执行的开源项目的话,也会附上一些命令行的操作提示。 这样我们就可以一边看文档,一边敲命令来安装和使用这个开源项目,当然你也可以选择复制命令去终端执行。 但是,你知道吗?在IDEA的Markdown编辑器中还有简单的方式! 你注意过这个小绿色箭头不? 其实我们只需要直接点击他,命令就可以直接执行了! Get这个技能了吗?视频分享地址:https://www.bilibili.com/video/BV1244y137hb ,欢迎点赞、关注、分享,三连支持! 如果您学习过程中如遇困难?可以加入我们超高质量的技术交流群,参与交流与讨论,更好的学习与进步!另外,不要...

前段时间发了个关于《Spring支持PHP》的视频:点击查看 然后有小伙伴留言说:“你这个翻译好像很好用的样子”。 的确,我自己也觉得很好用。之前视频没看过的不知道是哪个,可以通过截图简单了解下: 基本操作就是选中要翻译的句子,直接按个快捷键,就出来了,并且可以同时产生多个不同翻译API的结果。 好了,废话不多说,下面具体介绍这个翻译软件! Bob我在用的翻译软件是一个叫Bob的开源软件。 虽然图标有点丑 + 非主流,但真的挺好用的。但比较可惜的是目前主要就支持MacOS用户。 功能上基本覆盖常规需求了: 划词翻译(我最常用) 截图翻译 输入翻译 翻译多开 自定义插件 自动识别语种 驼峰拆分、蛇形拆分 AppleScript 调用 PopClip 调用 安装Homebrew安装 在已经安装了Homebrew的用户直接用下面命令就可以安装 brew install --cas...

昨天分享了一个在IDEA中使用Jump To Line插件实现跳转到任意行的的小技巧。 很不幸,发布没多久,就“翻车”了!不过这次翻车并不尴尬,反而还挺开心,因为DD也Get到新技能了! 到底哪里翻车了呢?看看下面这个留言: 这位小伙伴提示,点击行号试试,于是DD就试了一下,果然是可以的! 于是,DD就果断卸载了昨天分享的Jump To Line插件,真的非常感谢这位朋友的分享。同时,借这次的分享“翻车”事件,再跟大家聊聊知识分享这个事情。 我认为分享不光是对自己知识的总结,也是与读者的交流,你可以通过这个过程进一步让自己提升。所以,我还是鼓励大家多做一些分享,不论是在技术社区,还是在公司内部,在有过思考的前提下,多发表自己的观点,不要害怕错误,害怕被喷,没有人是万能的,每个人都有自己知识盲区,每个人都需要持续不断的学习。 这里我顺手也把过程录下来了,感兴趣的小伙伴也可以看看:ht...

最近这段时间,一些互联网大厂把裁员称为“毕业”的话题被热议了很久。 上午,DD在网上瞎逛看到了一篇文章,似乎找了这一做法的祖先。原来这么有“创意”的操作,很好多年前的漂亮过就已经有了,所以其实这也是个舶来品? 在这篇发表于2016年4月的文章中,据作者称:他在软件公司HubSpot工作了近两年,当有人被解雇时,被称为“毕业”。在“毕业”的那一刻,他们都会从老板那里收到一封欢快的电子邮件告诉他们,XX已经毕业了,我们都很兴奋地看到她如何在她的下一个重大冒险中使用她的超能力。 有一天,这件事发生在了作者的一个朋友身上。她35岁,已经在公司工作了四年,28岁的经理在没有任何解释的情况下告诉她,她有两周的时间休假。在她工作的最后一天,那位经理为她组织了一场欢送会。 这个让DD想到了之前有个网友的这条留言… 这个非常现实,也很残酷,但HubSpot的每个人都表现得好像这是完全正常的。员...

昨天分享了一个在IDEA中为Debug断点添加条件的小技巧。今天继续分享一个Debug过程中非常实用的小插件。 Jump To Line插件名字叫Jump To Line: 安装完成之后,你在Debug过程中,会在断点的左边出现一个黄色的小尖头。 你可以通过拖动这个黄色小尖头,直接将程序执行到某一行代码的位置,实现拖到哪儿执行到哪儿的效果,具体效果如下: 视频演示:https://www.bilibili.com/video/BV1Br4y1p7UB 今天的分享就到这里,如果这个小技巧对你有用,那就帮忙点赞、在看、分享、关注,四连支持一下吧! 如果您学习过程中如遇困难?可以加入我们超高质量的技术交流群,参与交流与讨论,更好的学习与进步!另外,不要走开,这是我在持续更新的玩转IDEA专栏,电子书形式的沉浸式阅读体验,赶紧加入收藏夹吧!

近日,IDEA 2022.1的Beta 2版本发布了!下面我们一起来看看对于我们Java开发者来说,有哪些重要的更新内容。 Java增强随着Java 18的正式发布,IDEA也在该版本中迅速跟进。目前已经支持的功能包括: @snippet标记 为了简化在API文档中包含示例源代码,在JDK 18中引入了用于JavaDoc的标准Doclet的@Snipket标记。所以,在这个版本中,就可以像下面这样在注释中添加一些示例代码了。 switch增强 在JDK 17中引入的Switch表达式模式匹配规范这次也已经更新,在该版本的IntelliJ IDEA已支持这两种基本更新。 其他更新 在JDK18中,默认字符集直接就是UTF-8,而不是根据平台的不同而有不同的默认字符集。 非静态内部类不会捕获未使用的this,所以将不会再触发警告 JUnit 5增强添加了对JUnit 5.7中引...