关于 Java 及其生态系统的诚实看法
来源:
Dev.to 好吧,我承认我的主要语言是 C#。但这是我对 Java 及其周边生态系统的公正看法。我经常在 Java 中使用 bash 命令,看到它的所有缺点。例如,Java 没有属性,它本身没有事件,没有结构,没有运算符重载,并且直到 Java 10 才没有推理,因此没有“var”。C# 里有一切!另外,由于缺少 LINQ、var 和 enum,我在 Java 中使用了 bash。然而我用 Java 写了很多东西,特别是当我为 Android 创建应用程序时,但也为其他东西创建应用程序。我的第一个项目也是用 Java 编写的!于是,周五晚上,由于时间紧迫,我不得不用Java连续写了几个小时。猜猜我发现了什么?溪流!
显然 Java 8 引入了线程!我对此一无所知!对于那些不知道的人来说,Streams 是 LINQ 的 Java 实现。我还发现Java 10有类型推断,所以Java现在有了var函数!我不敢相信我的知识有多么过时,但说实话,这是有原因的。这两件事对我的思想产生了很大的影响!您是否知道 Java 总是检查异常,但 C# 却不会?我承认我真的很怀念C#中的这个功能!是的,没有结构、属性等,但是该死的,它很优雅!我认为 Java 的设计迫使开发人员编写更健壮的应用程序。而在 .NET 世界中,这很大程度上由编码人员自行决定。一些开发人员喜欢这些限制,而另一些开发人员则喜欢自由。虽然两种语言都相当安全,但 Java 显然略占优势。那么,为什么大公司更青睐Java呢?我想我现在知道答案了!最让我沮丧的是......在你在互联网上看到的大多数代码示例中,这些高级功能并不总是被使用......我认为如果一个新的Java开发人员看到'var'写在整个代码库中,他会发疯的!那么流呢?什么是流?Java 开发人员喜欢 For 循环!事实上,即使是 foreach 循环在 Java 世界中也相当罕见(也许有一个原因:For 循环更加优化)。但这些功能都不错!我会进一步说这些功能太棒了!当我编写 Android 应用程序并注意到 Android API 中几乎没有地方使用枚举时,这真的让我很痛苦!这是公平的,因为 Android 是很多年前编写的。最让我烦恼的是,每次需要在Android中使用Activity for Results函数时,我都必须使用常量,如下所示:
int PICK_IMAGE_FROM_GALLERY = 3000 兄弟,这太疯狂了!然而世界各地的人们已经开始接受它。甚至我。Java 还缺乏原生事件实现!如果它有像 C# 这样的事件和委托就好了...(嘿,Java 语言的创建者,如果你们正在阅读本文,您需要添加事件!如果您已经拥有它们或正在开发它们,请告诉我)。现在我将告诉您 Java 生态系统中最大的缺陷是什么。文档!!!Oracle 网站上杂乱且无用的文档看起来愚蠢且过时,处于 2007 年的水平。它甚至并不总是有代码示例。如果你开始寻找一个相对不寻常的功能或 API 方法,你会发现一个无聊的定义、声明、参数、它属于哪个包 - 就是这样。我认为这是荒谬的。你不觉得这很荒唐吗?没有代码片段吗?因此,我们开发人员必须严重依赖像 StackOverflow 这样的论坛,或者像 TutorialsPoint 这样的其他编程网站...有时它们确实很有帮助,提供了展示此功能的良好代码示例,但有时它们并没有那么有用。我建议将 Microsoft 的 C# 文档与 Oracle 的 Java 文档进行比较……天上地下!不相信我?去查一下:
甲骨文和
微软。Microsoft 网站上的文档看起来很漂亮!他们甚至还有黑暗模式!我们开发者对黑暗模式非常着迷。Oracle 文档怎么样?正如我所说,它仍然是 2007 年。也许那时候还没有深色模式?所以,我想说Java太神奇了!但这种语言因过时的文档而受到很大影响。这些大多是旧文档和旧手册,没有突出显示急需的新功能,例如线程、变量和枚举。现在人们说 Java 开始过时了,将会被 Kotlin 取代,但我不同意。因为即使这是真的,他在很长一段时间内也不会取代她。这将需要很多很多年。你还记得Scala也试图取代它吗?那么结果是什么呢?Java 仍然统治着整个 JVM 生态系统。尽管我承认 Scala 与 Java 有很大不同,主要是在功能上。现在,终于...还有一件事比 Java 世界中的任何事情都更让我感动。这就是获取JDK。为什么下载JDK这么难?我的意思是,如果我需要 JDK,简单的 Google 搜索就会将我指向 Oracle 网站,我会去那里找到我需要的 JDK 版本。到目前为止,一切都相对容易,但为了下载它,我需要注册。为什么我要在 Oracle 上创建一个帐户,然后每周处理他们的电子邮件,而不是仅仅下载 JDK?请记住,Java 从第一天起就是开源的!与 C# 不同的是,C# 直到 2015 年才开源。所以,我已经很沮丧并转到谷歌搜索结果中的第二个网站。它引导我访问 OpenJDK 站点。我在那里找到 JDK 并单击“下载”。但是(令人惊讶!)他们提供了来自其他站点的 JDK 实现的链接!在这些网站中,有一个该死的 Oracle,但也有一个到 Red Hat 网站的链接。是的,红帽很棒,它是世界上开源公司的先驱之一。好的,我要去他们的网站!我会从那里下载它!我点击此链接,找到我正在寻找的 JDK 版本,你猜怎么着?我也必须在那里注册...(戏剧性的停顿)这真是悲伤...操它!这些人怎么了?最后,我屈服并安装了 Chocolatey(它类似于 apt-get,但适用于 Windows。我认为它是第一个广泛分发和使用的 Windows 包管理器)。所以在这之后我需要在 PowerShell 中编写一个简单的命令,例如:choco install jdk-1.8。我做到了!(如果您是一名 C# 开发人员,您就会知道只需点击 2-3 次即可轻松获得 .Net SDK,无需注册或类似操作)。总结一下我的长篇大论:Java 是一种很棒的编程语言。它美观、可靠,并且拥有(在我看来)世界上最好的 IDE - 来自 JetBrains 的著名 IntelliJ IDEA。此外,Java 拥有非常有帮助的社区和庞大且多样化的生态系统。我是这么说的 - 一个 C# 开发人员...但我们需要更新文档。代码示例。API。我们需要让获取 JDK 变得更加容易。总的来说,Java 正在朝着正确的方向发展,虽然最近它的受欢迎程度可能有所下降,但这不会让 Java 消失。多年来它一直位居世界最佳语言排行榜榜首!我一直使用Java,并且将来也会继续这样做。
2021 年值得考虑的三种新 Java 工具
来源:
OpenSource 尽管 Python、Go 和 Node.js 很受欢迎,近年来也被积极用于实施人工智能、机器学习和 Kubernetes 相关项目,但 Java 技术在企业应用程序开发中仍然发挥着关键作用。根据 Developer Economics 的数据,2020 年第三季度全球有 800 万企业 Java 开发人员。
Java 编程语言已存在超过 25 年,并且不断更新。新的工具和框架不断涌现,可以增强您的应用程序和职业生涯。绝大多数 Java 平台都是为了实现具有动态行为的长时间运行的进程而创建的,旨在在服务器或虚拟机上运行。随着 2014 年 Kubernetes 容器的出现,这种情况发生了变化。现在,在 Kubernetes 上运行 Java 时面临的最大挑战是:通过减少内存占用、加快启动和响应时间以及减小文件大小来优化应用程序性能。
三个新的 Java 框架和工具
Java 开发人员一直在寻找将流行工具和开源项目集成到他们的 Java 应用程序中的最简单方法。新的高性能工具显着提高了开发效率,并鼓励更多公司和个人开发人员使用 Java 堆栈。今天我们将讨论三个新的 Java 框架和工具:
Quarkus 专为开发云微服务和无服务器应用程序而设计。它在 Kubernetes 等容器编排平台中具有快速启动时间、较小的内存驻留集 (RSS) 大小以及较高的内存密度。根据 JRebel 的第九次年度报告,Java 开发人员中 Quarkus 的使用率增长了 6%(不到前一年的 1%)。Micronaut 和 Vert.x 分别增长至 4% 和 2%(去年约为 1%)。
借助 Eclipse JKube,Java 开发人员可以使用 Docker、Jib 或 Source-To-Image 构建策略创建基于云 Java 应用程序的容器映像。该工具还在编译时生成 Kubernetes 和 OpenShift 清单,并改善调试、监控和日志记录工具的体验。
MicroProfile 解决了与优化 Java 微服务企业架构相关的问题,而无需引入新框架或重构整个应用程序。此外,MicroProfile 规范(例如 Health、Open Tracing、Open API、Fault Tolerance、Metrics、Config)随着 Jakarta EE 的实现而不断发展。
结论
很难说哪些 Java 框架或工具最适合企业 Java 开发人员。只要有机会改进 Java 堆栈并加速企业业务增长,我们就可以期待新的框架、工具和平台的出现。检查它们,看看它们是否可以在 2021 年改进您的 Java 应用程序。
GO TO FULL VERSION