2020 年 Java 技术报告:半数开发者仍在使用 Java 8

spring cloud分布式事务从入门到精通

(如下载连接失效,请私信我)

百度云下载链接:https://pan.baidu.com/s/1EtYyj7MEBqIGSYg2ljBFyg 提取码:n8p7

备份下载地址 https://huoyan-dabing.lanzous.com/b0d253o4h 密码:9sem

JRebel 发布了 2020 年 Java 技术报告。JRebel 是 Perforce 的 JVM 插件之一,它允许 Java 开发者即时更新代码,并看到这些变化反映在所正开发的应用程序中,而无需重新启动应用服务器。

JRebel 的调查收到了全球开发者近 400 条回复。这份调查报告涵盖了开发者工具链的所有部分,包括编程语言、应用架构、应用服务器、运行时平台、框架技术、框架配置、IDE、JRE/JDK 发行版、PaaS 提供商、数据库、部署模式、构建工具和虚拟化工具。

Java 语言

58% 的受访者表示,他们在主要应用程序中选择 Java 8 作为编程语言。而 Java 11 以 23% 的受访者位居第二。7% 的受访者表示使用 Java 7 或更早版本,另有 6% 的受访者表示使用 Java 12 或更高版本。Kotlin 和 JavaScript 的使用率最低,分别为 3% 和 2%。

对我们来说,看到 Java 8 成为占主导地位的编程语言,并不是一件令人惊讶的事情。然而,令人惊讶的是,只有 23% 的受访者使用 Java 11。我们认为,这与 Java 自从 Java 8 以来缺乏真正有效的更新以及更新 JVM 的成本有关。对于仍在使用 Java 7 或更早版本的受访者,我们预计,随着越来越多的应用程序继续迁移到 Java 14 或当前可用的版本,这一数字将会减少。

Java 应用服务器

各种应用服务器是否正在消失?我们的调查结果表明,开发者使用 Tomcat 的速度几乎是最接近的竞争对手的五倍。61% 的受访者表示,在他们的主要应用程序上使用 Tomcat,很明显,Tomcat 是占主导地位的应用服务器。排名第二的应用服务器是 Jetty,占 13%;而 WebLogic 和 WebSphere 的使用率分别为 7% 和 6%。排在最后的是,JBoss/Wildfly 的使用率为 5%。

很明显,Tomcat 为了赢取如此大的市场份额,正在采取正确的措施。对我来说,至少部分原因是 Tomcat 的多功能性以及与其他主要 Java 平台的兼容性,如 Spring Boot、Docker、Hybris 和 AWS。—Curtis Johnson,JRebel 产品经理

另一个主要方面是它的成本:它是免费的。管理层因此很难拒绝它。以前,缺乏对应用服务器的支持是人们习惯使用 Websphere、Weblogic 和 JBoss 等应用服务器的核心原因之一。现在看来,Java 架构公司已经决定,支持应用服务器的最佳方式是在其架构中,而不是只在应用服务器中。

Java 运行时平台

运行时平台最受欢迎的选择是 Spring Boot,占 83%。当然,多年来,Spring Boot 一直是首选的 Java 框架。这至少部分归因于近年来 Java 应用程序越来越多地采用微服务。在所有受访者中,Spring 以 2% 成为第二受欢迎的选择,而不使用运行时平台的受访者也占了 2%,打成了平手。使用 Dropwizard、Micronaut、Vert.x 或自定义平台的受访者各占 1%。

Java 框架技术

这个问题要求受访者选择在他们的主要项目中使用的应用程序框架和技术。由于大多数应用程序使用各种不同的框架技术,因此这个问题允许多个回答。

86% 的受访者表示使用 Spring。51% 的受访者表示使用了 Hibernate、OpenJPA 或 EclipseLink 等持久性技术。27% 的受访者表示使用了服务器端渲染技术,如 JSP、JSF、Thymeleaf、FreeMarker 或 GWT。26% 的受访者表示使用 JAX-RS 或 JAX-WS 技术,如 Jersey、RESTEasy、CXF 或 Axis。对于响应式框架,11% 的受访者表示使用了 Vert.x、AKka、RxJava 或 Project Reactor 等技术。最后,7% 的受访者表示在他们的主要项目中使用了 JavaBeans。

Java 框架配置

2020 年 Java 技术报告:半数开发者仍在使用 Java 8

对于框架配置,我们发现大多数受访者在类、方法和字段上使用 @Annotation,或者使用外部 xml、yaml 或类似文件。68% 的用户表示使用 @Annotation,67% 的用户表示使用外部 xmlL、yaml 或类似文件。18% 的受访者使用在初始化期间运行的方法中添加的代码进行配置。

Java IDE

在这个问题中,我们要求开发者列出他们专业使用的集成开发环境(Integrated Development Environment,IDE)。就在几年前,开发者还会质疑在 IDE 上花钱是否值得。

但是,有 82% 的受访者表示他们使用 IntelliJ IDEA ,很明显,这个付费的 IDE 非常值得一试。第二个最常用的 IDE 是 Eclipse,占 24%,而 VSCode 占 10%。最后,有 4% 的受访者表示,以专业身份使用 NetBeans。这些年来,NetBeans 真的失去了所有的兴趣,甚至连 VSCode 在这次调查中都超过了它。

JRE/JDK 发行版

在这个调查问题中,我们要求受访者选择他们使用的 JRE/JDK 发行版。而且,在这项调查中一个更令人惊讶的结果是,我们发现,将近 50% 的受访者正在使用付费的 Oracle JDK。这比使用 Oracle OpenJDK 的受访者要高出 13%,后者的比例为 36%。

我们认为这可能出于两个原因:1. 在我们的调查中有大量的 Java 8 开发者。我们认为,使用 Java 8 的开发者数量表明,该项目在很长一段时间内没有更新了,这可能是使得应用程序保持在 Oracle 发行版的原因。2. Oracle JDK 提供的支持可能比我们想象的更重要。

看到在我们的调查受访者中,有如此多的人在为 Oracle JDK 付费,这真是令人惊讶。我完全期待开源选项拥有更大的市场份额。—Curtis Johnson,JRebel 产品经理

除了 Oracle OpenJDK 和 Oracle JDK 外,10% 的受访者表示使用了 AdoptOpenJDK,另有 2% 的受访者表示使用 Azul Zulu。

Java PaaS 提供商

在这个问题中,我们要求受访者报告他们所选择的 PaaS 提供商。在使用 PaaS 提供商的 60% 受访者中,43% 选择 AWS,14% 选择 Microsoft Azure,12% 选择 Google Cloud Platform。选择较少的供应商包括 Pivotal Cloud Foundry,占 4%,SAP Cloud Platform 和 IBM Cloud 各占 2%。

Java 数据库

在这个问题中,我们要求受访者选择他们当前使用的数据库。最受欢迎的是 PostgreSQL,占 47%,紧随其后的是 Oracle DB,占 42%。接下来是 MySQL,有 28% 的受访者报告了使用情况。MongoDB 位居第四,在受访者中占 12%。使用最少的数据库包括 SQL、NoSQL 和 Cassandra,使用率分别为 7%、6% 和 4%。

Java 部署模式

在这个问题中,我们要求受访者报告他们使用的是哪种部署模式。最受欢迎的部署模式(占 46%)是将应用程序作为 JAR 运行。44% 的受访者报告称他们部署到应用服务器上,而 5% 的受访者报告他们使用了 Hybris 或 Liferay 等平台来部署他们的应用。

Java 构建工具

对于构建工具,我们要求开发者选择他们在主应用程序中使用的工具。不出所料,Maven 和 Gradle 是最常用的工具。但是,也许反映了在移动开发领域工作的受访者的数量,Gradle 在这两者中更受欢迎。我们认为这并不能反映出 Maven 和 Gradle 被采用的现实,但无论如何,这都是一个有趣的现象。我们的调查发现,47% 的受访者使用 Gradle 作为他们主要应用程序的构建工具,而 44% 的受访者表示使用 Maven。Ant 的使用率都低于这两个数字,均为 7%。

Java 虚拟化工具

在这个问题中,我们询问了开发者他们使用哪些虚拟化工具。到目前为止,最常用的工具是 Docker,占 74%。考虑到使用微服务的 Java 开发者的比例,这并不令人意外。Kubernetes 是第二受欢迎的虚拟化工具,占 35%,这表明 Kubernetes 在过去几年里经历了持续的增长。

随着 Kubernetes 的发展,它在未来几年将在市场上占主导地位也就不足为奇了。VMWare 和 Vagrant 是最后两个使用率最高的工具,使用率分别为 18% 和 5%。最后,有 14% 的受访者表示没有使用虚拟化工具。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1. Introduction to Java 1.1Beginnings of the Java Language Project 1.2Design Goals of Java 1.2.1Simple, Object Oriented, and Familiar 1.2.2Robust and Secure 1.2.3Architecture Neutral and Portable 1.2.4High Performance 1.2.5Interpreted, Threaded, and Dynamic 1.3The Java Platform--a New Approach to Distributed Computing 2. Java--Simple and Familiar 2.1Main Features of the Java Language 2.1.1Primitive Data Types 2.1.2Arithmetic and Relational Operators 2.1.3Arrays 2.1.4Strings 2.1.5Multi-Level Break 2.1.6Memory Management and Garbage Collection 2.1.7The Background Garbage Collector 2.1.8Integrated Thread Synchronization 2.2Features Removed from C and C++ 2.2.1No More Typedefs, Defines, or Preprocessor 2.2.2No More Structures or Unions 2.2.3No Enums 2.2.4No More Functions 2.2.5No More Multiple Inheritance 2.2.6No More Goto Statements 2.2.7No More Operator Overloading 2.2.8No More Automatic Coercions 2.2.9No More Pointers 2.3Summary 3. Java is Object Oriented 3.1Object Technology in Java 3.2What Are Objects? 3.3Basics of Objects 3.3.1Classes 3.3.2Instantiating an Object from its Class 3.3.3Constructors 3.3.4Methods and Messaging 3.3.5Finalizers 3.3.6Subclasses 3.3.7Java Language Interfaces 3.3.8Access Control 3.3.9Packages 3.3.10Class Variables and Class Methods 3.3.11Abstract Methods 3.4Summary 4. Architecture Neutral, Portable, and Robust 4.1Architecture Neutral 4.1.1Byte Codes 4.2Portable 4.3Robust 4.3.1Strict Compile-Time and Run-Time Checking 4.4Summary 5. Interpreted and Dynamic 5.1Dynamic Loading and Binding 5.1.1The Fragile Superclass Problem 5.1.2Solving the Fragile Superclass Problem 5.1.3Run-Time Representations 5.2Summary 6. Security in Java 6.1Memory Allocation and Layout 6.2Security Checks in the Class Loader 6.3The Byte Code Verification Process 6.3.1The Byte Code Verifier 6.4Security in the Java Networking Package 6.5Summary 7. Multithreading 7.1Threads at the Java Language Level 7.2Integrated Thread Synchronization 7.3Multithreading Support--Conclusion 8. Performance and Comparisons 8.1Performance 8.2The Java Language Compared 8.3A Major Benefit of Java: Fast and Fearless Prototyping 8.4Summary 9. Java Base System and Libraries 9.1Java Language Classes 9.2Input Output Package 9.3Utility Package 9.4Abstract Window Toolkit 10. The HotJava World-Wide Web Browser 10.1The Evolution of Cyberspace 10.1.1First Generation Browsers 10.1.2The HotJava Browser--A New Concept in Web Browsers 10.1.3The Essential Difference 10.1.4Dynamic Content 10.1.5Dynamic Types 10.1.6Dynamic Protocols 10.2Freedom to Innovate 10.3Implementation Details 10.4Security 10.4.1The First Layer--the Java Language Interpreter 10.4.2The Next Layer--the Higher Level Protocols 10.5HotJava--the Promise 11. Further Reading
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lyb9292

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值