当涉及到代码时,有很多热门话题,并且与时俱进总是潮流所向。如果你想知道如何分离糟粕和精华,那么我们已经准备就绪,只欠各位阅读下文的东风。
在接下来的内容中,我们将查看2017年会更热的热点。当然说的是Java方面的。好的,那就启航吧。
Java 9,你真好,你让我神魂颠倒
首先从Java 6中的一个bug说起,这个bug在Java 9中将变成一个功能:sun.misc.Unsafe。此库是用于执行低级别、不安全操作的方法的集合。例如,使用allocate Instance方法允许你跳过对象初始化阶段或绕过构造函数中的安全检查。
虽然Oracle考虑过干脆删除Unsafe库,但社区改变了他们的主意,并最终使Unsafe库成为了Java 9的一个功能。
这不是唯一一次社区谈论Java 9或Java未来版本的可能变化。今年早些时候,Brian Goetz,Oracle的Java语言架构师发布了JEP 286的调查结果。
该提案建议在未来的Java版本中引入Local Variable Type Inference,以简化Java应用程序的编写。实质? 74%的开发人员希望不要那么冗长,并且能够声明变量而不必指定相关联的类型。
过了200多天,直到Java 9将被发布(因为我们掰着手指在数它的发布日期),我们有足够的时间来挖掘不同的JEPs,并找到新的和改进的功能。这就是我们遇到的JEP 266:更多并发更新,包括CompletableFuture和令人兴奋的java.util.concurrent.Flow类的更新。
毫无疑问,过去一年中,Java 9已经成为了头条新闻,并且随着我们进入2017年,它将继续获得越来越多的关注。现在我们要做的是等待,希望它不会被再次延迟发布。
关于Java EE?
2016年对于Java Enterprise Edition,也被称为Java EE来说是有意义的一年。它一直是全球Java社区的一个混乱的来源,因为它建立在Java SE之上。从官方来说,它就“只是”一个规范,通过来自Oracle(如Glassfish参考实现)和其他厂商如Red Hat和IBM的实际可用的实现。
Java EE存在着许多问题,主要是这一个“Oracle是否已经放弃了企业软件?”。Java EE的致命打击来自Gartner的“应用程序平台市场指南”报告。在报告中,Gartner指出,Java EE是为了“已经过时且不再满足现代应用程序需求的模型”而构建的。唉~
Java EE社区表示Gartner说得不太对,并由此引发了围绕这个版本的讨论。Java EE 8将在2017年发布,我们觉得现在就赞誉它还为时尚早。我们必须等待,看看结果如何以及Java EE是否会崩溃。
关于更多Java
Java不仅仅是Java 9,它还有很多趋势是你必须保持在潮流之上的。一个好的开始浏览过去一年的100个顶级Java库,检查在过去一年是否有任何你可能错过了的东西。
此外,如果库并非你所好,那么还有一些有趣的来自于Google的Java库(不是Guava)值得一阅。
遵循教育路线,有一些关键的元素你只能随着经验的增长而学到,所以准备好学习吧。
如果你正在寻找挑战,那么有很多项目值得你花时间。你可以试着去解决这些优雅的问题,字符串操作,或者甚至Java音乐播放器,边玩边学习。当然,如果你遇到任何问题或有任何疑问的话,伟大的Stackoverflow随时为你提供服务。这里有七个我们发现的最佳问题。
有趣的小轶事:你能猜到GitHub的顶级Java项目如何使用日志吗?我们分析了1,313个GitHub存储库中的779,236个Java日志记录语句,以找出答案:ERROR,WARN还是FATAL?
将Java放在容器中
容器在新一年中变得非常有用,并且它们在管理servlet的生命周期,将URL映射到特定servlet并确保URL请求者具有正确的访问权限时也非常方便。
很多人都对Java容器感兴趣。在我们对Alpine Linux和Docker的结合激起了兴趣的几个月后,单OverOps就可以支持聊天,然后我们看到越来越多的用户使用他们的容器尝试它。
这就是为什么我们决定尝试Alpine Linux的原因,Alpine Linux是独立的,脱离了Linux,基于musl libc(读作’muscle’)和busybox。除了轻量级这个特点,它也遵循安全为主的原则,并且使用grsec / Pax,对于Linux内核而言增强了安全。
Docker仍然是业界最热门的工具之一。该公司承担了运输代码的挑战性任务,并且使它更快更容易地使用容器。但是,如果你想在Docker上使用Java,那么你可能需要重新考虑一下,因为它可能会导致你打破(Java)戒律。
关于DevOps?
我们知道你在想什么——下面我们将来说一说这个流行语。我们在2016年遇到的最常见的主题之一是DevOps,它有着各种各样的含义和工作方法。它的要旨是专注于知道在一个实时应用程序中发生了什么,并能够控制它。
我们怎么做到这一点?通过监控我们的生产环境。性能问题,错误和异常总是在产生,我们必须知道究竟发生了什么。但是,我们怎么知道什么时候以及为什么产生了某些问题?这就是Observability的概念所在,帮助我们深入了解系统并知道发生了什么。
它是DevOps工作流程的一部分,并且在控制理论中,它是通过其外部输出的知识来推断系统内部状态如何的一种度量手段。这里出现了另一个“流行语”:Instrumentation。正是Instrumentation允许我们在应用程序对我们和我们的用户发疯前获得洞察。
在我们建立这些基石之后,现在是时候提供可以帮助我们监控应用程序性能的工具了。一旦应用程序启动并运行,我们需要知道是否以及何时抛出错误或异常。这就是为什么市场上有许多错误跟踪工具,因此,所有你需要做的是选择正确的。
错误不是唯一需要我们关注的问题,过去的一年剩下的最大挑战是处理日志文件。每个人都会使用日志文件来搜索和理解应用程序中的错误、崩溃和异常。有些人使用直接方法和筛选纯文本日志文件,而其他人依靠日志管理工具来帮助他们在log-haystack中找到错误。
日志文件依然是个坑
如果你正在寻找一种新的方式来调试生产错误和异常,那么OverOps(2016年期间进行了修改)可以为你提供了整个调用堆栈的完整源代码和变量状态。导致失败的每个参数和每个变量会被传递到事务或工作流中。
还有很多
我们还不能忽略微服务的趋势。有人会说,这就是另一个令人难以忍受的流行语,而另一些人则高歌吟颂其分解庞然大物或采取逆向方法和注重消极方面的优势。
无论你用什么方法看,这些日子好像每个人都搞微服务。现在你只需要小心在使用微服务时不要在生产中涉及它。
无服务器计算架构在过去几年中也一直受到关注。无服务器计算的概念涉及部署代码,而不是服务器。云提供商不是购买、管理和扩展服务器,而是处理对VM的请求。
所以你仍然需要服务器,但这个新模式承担了这个责任。或者换句话说,在处理到服务器或安装的任何软件上的部署都没有麻烦。基本上,所有你需要的是一个管理的云服务和一台计算机。
以及最后一个,即使人工智能和机器学习已经存在一段时间了,但依然感觉每个人还是在谈论它们。它们不再是科学家和研究人员的秘密,几乎在任何新兴技术中都可以看到实现的影子。
最近这一领域的喧嚣尘上和演变进步使得非研究人员更容易了解相关内容。现在,你完全可以轻松访问相关的算法和工具。你必须知道你在做什么,而且通过机器学习能力来增强应用程序会容易得多。
进军社区
你必须热爱Java社区。因为它们不仅影响了语言的未来版本,而且还通过聚会、文章和一切有关Java的信息丰富了我们所有人。去年有一些非常令人惊叹的会议,如JavaOne,QCon,并且更多伟大的会谈你现在还可以重新观看。
在软件开发中学习新事物的主要资源之一是观看在线讲座和视频。这是一个伟大的平台,因为里面有Java专家与我们分享他们的经验,而你无需离开舒适的沙发四处奔波。
或者,如果你不喜欢看视频,那么浏览Java decks也可以让你保持更新到当前的新趋势。
同伴支持与我们工作的每个方面都是相关的,而且我们可以从我们周围的人那里学到很多东西。一个关键的特点是多产,因为总有改进的余地。我们所要做的就是准备好接受建议,并倾听任何愿意发言的人。
不要忘记开源
社区的另一个关键因素是支持和促进开源项目。事实上,我们已经正式推出了你一直在等待(也有可能并非如此)的命令行工具——Bullshifier。它用于在大得离谱的代码基础上测试一些监控能力,通过成千上万的调用深度,成千上万的类,并结束了异常的事务。
最后的想法
去年我们邂逅了很多主题和流行语。有一些我们已经知晓,有一些崭新的东西则允许我们以完全不同的方式去看Java。现在我们期待着新的一年的Java 9,期待今年Java会有一些更新和更惊人的功能,会谈,项目,甚至一两个新的流行语。
2017年你最喜欢的Java功能、会谈或话题是什么?我们很乐意在下面的评论聆听各位的声音