暗锤Spring框架:云原生时代中的Java危机 - JAXenter


Java的现状也太难了,有些人甚至将其称为“老式语言”。尽管它很受欢迎,但还是有一些抱怨。在我们这个新的云原生世界中,为什么Java还是需要发展?不断发展才能适应现代的云原生,Java需要保持所有使其可靠的功能,同时还必须能够在新的应用程序环境中运行。
不用担心,当您听到Java被描述为一种“老式”编程语言时,您并不是唯一一个感到陈旧的人。尽管Java自1995年问世以来,它肯定还不准备退休(或者说退休),并且继续跻身TIOBE索引的顶级语言之列。 实际上,到目前为止,没有其他语言如此流行。
但是,这并非没有问题,包括有时过于笨拙以至于无法跟上某些新的编程语言,不够敏捷和灵活到无法在这种新的容器世界中工作,并且与未编码的应用程序并没有真正的关系。
本文将讨论社区可以做什么来帮助该语言跟上现代应用程序开发趋势,以确保该语言在新的云原生编程世界中继续占有一席之地。

Java为什么经受住了时间的考验?
据说Java具有“文艺复兴的时刻”,编程语言在不断发展。实际上,对新创新的需求如此之大,以至于发布周期已缩短到每六个月一次。除了从未跌至TIOBE指数的第二位之外,SlashData预测到2019年底将有760万名Java开发人员。

为什么Java需要发展?
现代应用程序开发与Java之间的脱节之处在于,基于较新的编程语言构建的应用程序倾向于更轻量,敏捷和灵活,并且通常在容器中运行,而传统上Java并没有这样的容器。
常见的抱怨包括:

  • Java太胖了,运行时环境通常包含从不使用的库。这对于微服务体系结构来说并不是一个好兆头,但是在使用Java应用程序解决更复杂的问题时确实可以使用。
  • 它仍然遵循“一次编写,随处运行”的原则,这意味着任何具有Java虚拟机(JVM)的设备都应该能够成功运行Java应用程序(即无需对其进行更改)。尽管这通常是一个很好的功能,但在定位于使用容器时这些却没有那么重要。
  • 与较新的应用程序相比,Java的启动时间更长,这可以归因于Java确实非常擅长解决复杂问题所需的一切,但在简化过程方面仍有一些不足之处。
  • 库太多,因此程序包太大,这会减慢启动时间,并使Java应用程序的敏捷性降低。
  • 有人还说Java太冗长,更多现代语言可以用更少的代码来完成相同的事情。
  • Java是一种非常动态的语言,它是使它如此高效和敏捷的部分原因,但也会导致某些框架滥用动态功能,从而导致更长的启动时间和较大的内存开销。
  • 在并发和吞吐量更重要的情况下,它并不是处理事件驱动的体系结构的最佳装备语言。Java解决此问题的计划是通过Fibers(banq注:而不是React等库包)。

为了不断发展以适应现代的云原生应用程序,Java需要保持所有使其可靠的功能,同时还必须能够在新的应用程序环境中运行。Java复兴的部分原因是,开发人员开始意识到这一点,并正在尽其所能使Java现代化,同时又不会偏离该语言的已尝试和真正的好处。这可以使数百万当前的Java开发人员能够扩展他们可以做的工作,而不必学习一种全新的语言并改变他们的工作方式。

Java在现代应用程序开发世界中
当我说现代应用程序开发时,我指的是像Kubernetes和Serverless这样的环境,它们都依赖于将代码部署到生产中的容器,直到最近,Java都不兼容。
长期以来,像Red Hat这样的Java领导者都希望通过诸如Quarkus之类的计划使其成为这些环境中的关键角色,Quarkus是为GraalVM和OpenJDK Hostpot量身定制的Kubernetes原生Java框架。通过为开发人员提供在统一的反应式和命令式编程模型中使用Java的能力,Quarkus的目标是使开发人员能够在Kubernetes和无服务器环境中工作而无需学习新的范例。它可以提供新的运行时效率,以尝试解决当前使Java陷入困境的某些问题,包括更快的启动时间,更低的内存利用率以及更小的应用程序和容器映像占用空间。
通过Quarkus之类的框架,我相信Java将能够更好地适应现代应用程序开发领域的需求,并且不仅会不断发展,而且还会不断创新。因为这是关键所在–为云原生Java创造通往未来的道路,并在此过程中将Java置于企业创新的中心。
 

使用spring 习惯了,好久没关注j2ee的发展了。