作为最受欢迎的编程语言之一,Java已经走过了20个年头。从已经落寞的诺基亚到现在火热的电商系统,我们都能看到Java语言的身影。经过20年的历练,这门语言已经逐渐成熟,并经过很多大型系统的考验。社区关于这门语言的讨论,也从语言使用过渡到了性能优化以及反思。

\\

InfoQ上有大量的关于Java性能、语言细节、语言对比等方面的文章,现在向大家推荐10篇精选的优秀文章,这些文章来自微信公众号InfoQ,如果您对各类技术感兴趣,推荐关注,后续我们也将会把最优秀的内容第一时间通过微信公众号推送给您。

\\

\\

1、作为一名Java程序员,我为何不在生产项目中转向GO

\\

自Google在2009年发布Go语言的第一个正式版之后,这门语言就以出色的语言特性受到大家的追捧,尤其是在需要高并发的场景下,大家都会想到是不是该用Go。随后,在国内涌现出了一批以七牛为代表的使用Go作为主要语言的团队,而许世伟大神本人也在各种场合下极力推动Go在国内的发展,于是在这种大环境下,中国的Go开发者群体逐渐超越了其他地区。

\\

那么问题来了,业余时间好学是一回事,真正要将一个新东西运用到生产中则是另一回事。JavaScript的开发者可以义无反顾地选择Node.js,但是对于Java开发者来说,在下一个大项目里究竟是该选择Go,还是Java呢?

\\

扫描二维码关注公众号后,发送数字 1 即可阅读原文。

\\

2、企业级Java应用最重要的4个性能指标

\\

虽然很多人都曾预言Java将一蹶不振,但是不可否认的是,很多重要项目中,尤其是银行和政府一些大型项目,Java仍在其中扮演着极其重要的角色。国内APM领军企业OneAPM的Java工程师陶炳哲,多次参与银行、运营商等大型企业的性能优化工作,总结了企业级Java应用最应重视的4个性能指标,主要包括:商业事务,外部服务,垃圾回收以及应用布局。

\\

扫描二维码关注公众号后,发送数字 2 即可阅读原文。

\\

3、你的Java代码对JIT编译友好吗?

\\

JIT编译器是Java虚拟机(以下简称JVM)中效率最高并且最重要的组成部分之一。但是很多的程序并没有充分利用JIT的高性能优化能力,很多开发者甚至也并不清楚他们的程序有效利用JIT的程度。

\\

在本文中,我们将介绍一些简单的方法来验证你的程序是否对JIT友好。这里我们并不打算覆盖诸如JIT编译器工作原理这些细节。只是提供一些简单基础的检测和方法来帮助你的代码对JIT友好,进而得到优化。

\\

扫描二维码关注公众号后,发送数字 3 即可阅读原文。

\\

4、Java大牛谈:我为什么反对用Node

\\

随着无线端的快速普及,前后端分离技术走上前台,而Node由于它的一些特性被工程师快速接受尤其是前端工程师,所以产生了很多Node是否会引起新的技术变革的讨论。

\\

我本人是淘系的一个Web开发人员,基本上经历了淘系关于Node和Java技术选型讨论的过程,所以今天我给大家推演一下在像淘系这个环境下Node能否会成为主流的Web开发技术,当然后面也给出了我认为比较适合的场景。

\\

扫描二维码关注公众号后,发送数字 4 即可阅读原文。

\\

5、Java永久代去哪儿了

\\

在Java虚拟机(以下简称JVM)中,类包含其对应的元数据,比如类的层级信息,方法数据和方法信息(如字节码,栈和变量大小),运行时常量池,已确定的符号引用和虚方法表。

\\

在过去(当自定义类加载器使用不普遍的时候),类几乎是“静态的”并且很少被卸载和回收,因此类也可以被看成“永久的”。另外由于类作为JVM实现的一部分,它们不由程序来创建,因为它们也被认为是“非堆”的内存。

\\

在JDK8之前的HotSpot虚拟机中,类的这些“永久的”数据存放在一个叫做永久代的区域。永久代一段连续的内存空间,我们在JVM启动之前可以通过设置-XX:MaxPermSize的值来控制永久代的大小,32位机器默认的永久代的大小为64M,64位的机器则为85M。永久代的垃圾回收和老年代的垃圾回收是绑定的,一旦其中一个区域被占满,这两个区都要进行垃圾回收。但是有一个明显的问题,由于我们可以通过‑XX:MaxPermSize 设置永久代的大小,一旦类的元数据超过了设定的大小,程序就会耗尽内存,并出现内存溢出错误(OOM)。

\\

备注:在JDK7之前的HotSpot虚拟机中,纳入字符串常量池的字符串被存储在永久代中,因此导致了一系列的性能问题和内存溢出错误。想要了解这些永久代移除这些字符串的信息,请访问这里查看。

\\

扫描二维码关注公众号后,发送数字 5 即可阅读原文。

\\

6、Java9新功能:HTTP2\u0026amp;REPL篇

\\

对Java 9的炒作将不再局限于模块化(modularity),Java 9正在搜罗大量额外的功能模块,这些功能模块正作为Java增强提案(JEP)提交,并在OpenJDK (Java SE的参考实现项目)中实现。

\\

在这篇文章中,我们将重点关注一些或将在Java 9整个生命周期中,对开发者的工作生活影响最大的JEP,包括新的HTTP/2支持和JShell REPL(读取-求值-打印-循环),后者带来了基于shell的交互式Java开发环境和探索性开发API。

\\

扫描二维码关注公众号后,发送数字 6 即可阅读原文。

\\

7、简化你的Java代码,让工作更高效

\\

计算机专家在问题求解时非常重视表达式简洁性的价值。Unix的先驱者Ken Thompson曾经说过非常著名的一句话:“丢弃1000行代码的那一天是我最有成效的一天之一。”这对于任何一个需要持续支持和维护的软件项目来说,都是一个当之无愧的目标。早期的Lisp贡献者Paul Graham甚至将语言的简洁性等同为语言的能力。这种对能力的认识让可以编写紧凑、简介的代码成为许多现代软件项目选择语言的首要标准。

\\

相比于其他程序设计语言,Java语言的冗长已经名声在外。其主要原因是由于程序开发社区中所形成的惯例,在完成任务时,很多情况下,要更大程度地考虑描述性和控制。例如,长期来看,长变量名会让大型代码库的可读性和可维护性更强。描述性的类名通常会映射为文件名,在向已有系统中增加新功能时,会显得很清晰。如果能够一直坚持下去,描述性名称可以极大简化用于表明应用中某一特定的功能的文本搜索。这些实践让Java在大型复杂代码库的大规模实现中取得了极大的成功。

\\

本文将着重介绍编写简洁Java代码的最佳实践,特别是关于JDK8中新增的功能。简而言之,Java 8中Lambda表达式的引入让更加优雅的代码成为可能。这在用新的Java Streaming API处理集合时尤其明显。

\\

扫描二维码关注公众号后,发送数字 7 即可阅读原文。

\\

8、你的Java日志,有没有用这些改进办法

\\

在任何系统中,日志都是非常重要的组成部分,它是反映系统运行情况的重要依据,也是排查问题时的必要线索。绝大多数人都认可日志的重要性,但是又有多少人仔细想过该怎么打日志,日志对性能的影响究竟有多大呢?今天就让我们来聊聊Java日志性能那些事。

\\

扫描二维码关注公众号后,发送数字 8 即可阅读原文。

\\

9、Java NIO通信框架在电信领域的实践

\\

从广义上看电信软件的范围非常广,细分实际可以分为两大类:系统软件和业务应用软件。

\\

系统软件包括路由器底层的信令机软件、手机操作系统等,业务应用软件主要包括客户关系管理CRM、网上营业厅、融合计费OCS和各类消息网关,例如短信网关、彩信网关等。

\\

本文重点介绍电信业务应用软件的技术变迁历史,以及华为电信软件架构演进和Java NIO框架在技术变迁中起到的关键作用。

\\

扫描二维码关注公众号后,发送数字 9 即可阅读原文。

\\

10、写代码这回事儿,架构师你可以说不吗?

\\

要让一个成功的架构得以实现,架构师必须要在整个生命周期始终保持与交付团队的紧密合作。保持紧密合作能够促进架构层面的快速反馈循环。并且还能够为架构师提供更多的与团队交流架构愿景和领导团队的机会。

\\

正如本文题目所描述的那样,架构师除了可以参与到实际的编码工作中之外,还有许多其他的方式可以参与到交付团队中,例如结对编程和同行评审。相反,某些参与方式有可能会对团队造成负面影响,例如接管交付、不允许团队自组织或者采用集体所有制。

\\

其中一个关键目的是为了避免“象牙塔”架构师的角色——只在项目最初发布架构,然后就再也不见踪影。谋求与交付团队的协作关系,共同努力尽早识别和解决架构性缺陷,从而交付成功的架构和最终的产品。

\\

扫描二维码关注公众号后,发送数字 10 即可阅读原文。

\\

Java开发者必读的10篇精选优秀技术文章相关推荐

  1. 100篇精选算法技术文章收藏

    目前按照文章的主题大致分成了下面几个模块,每个模块内都是按照发表时间由近到远排列: 排序&CXR预估 召回匹配 用户画像&特征工程 推荐搜索综合 计算广告 大数据 图算法 NLP&am ...

  2. 必读论文 | 云机器人必读论文10篇

    云机器人(Cloud Robotics)是云计算和机器人的交叉学科并且是机器人领域的一个重大热点新方向,它运用云计算的强大运算和存储能力,给机器人提供一个更智能的"大脑",在增强单 ...

  3. 必读论文|信息检索与推荐必读论文10篇

    AMiner研究团队开发出一款利用人工智能(AI)技术.帮助科研工作者阅读论文的智能论文搜索工具.该工具可以展示出该领域的必读论文,并且对所选论文进行"智能"阅读,反馈给你该论文的 ...

  4. 英语作文计算机80词九年级,10篇初中优秀英语作文80词左右

    10篇初中优秀英语作文80词左右2017-04-24 13:23:41文/叶丹 英语作文写作是英语学习的重要内容,也是英语学习的最终目标.下面,是初三网小编为你整理的10篇初中英语作文80词左右,希望 ...

  5. 写一篇好的技术文章有多难?

    就我而言,一年里我也没写出几篇让自己满意的文章.因为写一篇好的技术文章真的很难. 对于一篇好的文章来说,它有这么一些要求: 构建文章所需的理论体系 实践及代码验证 公正又有所偏爱的观点 又要注意这么一 ...

  6. 程序员怎样才能写出一篇好的技术文章

    来源:http://droidyue.com/blog/2016/06/19/how-to-write-an-awesome-post/ 首先,这算是一篇回答知乎问题 程序员怎样才能写出一篇好的博客或 ...

  7. 为什么linux图形引擎那么丑,为什么你的技术文章配图总是那么丑?那是你还没看过这篇教科书般的技术文章配图指南!...

    原标题:为什么你的技术文章配图总是那么丑?那是你还没看过这篇教科书般的技术文章配图指南! 这可能是一篇很多博客的读者都期待的文章,我最终还是决定说一说『如何为技术文章配图』这一话题,过去的几年一直都有 ...

  8. 每个程序员都必读的10篇文章

    作为一名Java程序员和软件开发人员,那些每个程序员都应该知道的XXX的文章教会了我不少东西,它们提供了某个特定领域的一些实用的并且有深度的信息,这些东西通常很难找到.在我学习的过程中我读到过许多非常 ...

  9. 必读的10篇关于GAN的论文

    前言 上次写的文章-- 一文了解下 GANs可以做到的事情,如果想进一步了解 GAN,学习研究 GAN,可以先从这 10 篇论文开始. 本文翻译自: https://towardsdatascienc ...

最新文章

  1. 【Java】 leetCode 删除链表中等于给定值 val 的所有节点。
  2. JAVA生成不重复随机数算法
  3. 【内容摘录自 MDN】变量作用域
  4. RBAC模型:表设计分析
  5. Maven的-pl -am -amd参数学习
  6. php边框圆角,css3圆角和圆角边框使用方法总结
  7. 介绍一个新鲜玩意 开源的杀毒软件
  8. Python数据分析学习笔记:计算相关系数
  9. Golang实践录:命令行cobra库实例优化
  10. mysql 判断是数据类型_mysql数据类型判断
  11. 算法题——投篮比赛获胜概率问题
  12. 无法访问 请与这台计算机,我们办公室两台电脑想连接一个共享的打印机,但是连接的时候,总是显示无法访问,请与这台计算机的管理员联系,应该怎么设置啊...
  13. stc12c5a60s2制作4*4*4,光立方c语言程序怎么写,基于STC12c5a60s2单片机的3D显示屏设计...
  14. pci-e服务器显卡性能,PCI-E带宽揭密 显卡究竟能吃多大的带宽
  15. APM_Rover运行纲领分析,以pixhawk-fmuv2为硬件平台,ChibiOS为底层操作系统:
  16. 软件系统开发费用的估算——功能点方法 应用实例
  17. 使用GameMaker中用于碰撞检测的脚本小记
  18. 别翻了,Lambda 表达式入门,看这篇就够了
  19. 什么是HashMap
  20. Temporary failure in name resolution错误解决方法

热门文章

  1. Spring Validation最佳实践及其实现原理,参数校验没那么简单!
  2. 阿里官方Redis开发规范!
  3. 写那么多年Java,还不知道啥是Java agent 的必须看一下!
  4. Spring是如何运用设计模式的?
  5. Openresty最佳案例 | 第3篇:Openresty的安装
  6. Spring Cloud第十二篇:断路器监控(Hystrix Dashboard)
  7. 用Python实现深度学习框架
  8. 12门课100分直博清华!这份成绩单冲上热搜,但学霸小伙也曾考过25分
  9. 本科生如何自学机器学习?
  10. 深度学习先驱Bengio:AI顶会论文的Deadline是时候取消了