导语
1991年,James Gosling带领着名为“Green Team”的团队着手研发一种新的语言以及专为下一代数字设备和计算机使用的网络系统。历时4年辛勤工作后,该项目最终修成正果并取名为Java。Java有着类似于C的语法并有“一次编译,随处运行”的灵便性。

回首Java过去的20年,首先是经历了微机时代的兴与衰,然后进入服务器领域及智能电话领域,继而在DHS的“不安全”定义下艰难前行,最后投入Oracle怀抱现正蓄势迸发第二春。难道还有别的语言有如此跌宕起伏的情节吗?

Java——“永存、曲折、低谷、重生”! [阅读全文]
情结篇
郑晔:越来越简单的“Java”
十多年工作经验的程序员,Duke选择奖获奖作品Moco的创始人

我刚成为Java程序员时,还是一个蛮荒年代,什么东西都鼓励自己动手丰衣足食,虽然开源的苗头已有星火,但大多数企业的态度是,非我族类,其心必异。我依然记得自己的第一个正式Java程序是实现一个SMTP服务器。

Java,20岁了。从我写下第一行Java代码,迄今已有十余年了,眼见Java——这个当年刚刚找到自己成长方向的懵懂少年,成长为如今当之无愧的业界王者。它已拥有世界上最庞大的开发者社区,以及无可匹敌的生态系统。这也意味着,选用Java做任何应用,都有着强有力的业界支撑,而无需担心自己孤独前行。[阅读全文]
沈询:细品这杯香浓的咖啡
王晶昱花名沈询,阿里高级专家,来自阿里巴巴中间件和稳定性平台

回想起8年前的我,应该是正在大学宿舍里努力地从网上搜索C语言的各种教程,在“值传递和指针传递的区别是什么?”“如何避免引用计数循环引用?”等问题中东突西撞不得要领吧。然后在某天,我偶然间看到了一门据称比C++简单的Java语言,恰巧还碰上一个好老师——莫倩老师,自然而然地激发起我去了解和学习Java的兴趣。

转眼,我使用Java已有8个年头了,现在想想,Java真的带给了我很多:它尽可能地避免我写出错误的代码。它不需要我去计算指针偏移量,也不需要我去关心垃圾回收问题,连Collection类都有DougLea这样的大神做好了封装。这些语言内建机制和类库极大地减轻了我的头脑负担,让我能够更加专注地完成业务逻辑。而最让我惊喜的是,Java一直不懈地追求JVM虚拟机的持续优化,各种眼花缭乱的锁优化、动态字节码编译调优、GC新算法等JVM优化层出不穷。[阅读全文]
专访唯品会架构师肖桦:做编码的架构师
肖桦(网名:江南白衣),开源项目SpringSide发起人,70后Java程序员

二十年的时间好像很长,但划分起来也就三四波的变迁。

语言层面,第一波是JDK5,泛型和新的并发包出来,要不要升到JDK5以支持泛型对很多项目是个困难的选择,最后是Spring之类几个核心的三方框架类库强行升级了,才带着整个Java社区跟随升级,那时候,每个升了级的项目都像走向了新生。很多项目也一直用JDK5到现在。

第二波是JDK6、7时,一波基于JVM的新语言出现,比如Scala、Cloujre,但对于不那么爱玩的项目来说,感觉不大。

第三波就是现在的JDK8,变动之大与JDK5相比并不小,所以现在也等着各个核心的框架如Spring先升级,可见Java社区并不是极客那么爱玩的地儿。[阅读全文]
专访葛一鸣:热情和毅力让我将技术进行到底
系统分析师,10余年Java学习和开发经验,著有《实战Java虚拟机——JVM故障诊断与性能优化》

Java目前正处于澎湃发展的好时期。可以看到,大量企业级应用都是用Java构建。尤其现在被广泛推崇的大数据,不少大数据软件如Hadoop,也都是用Java构建的。

此外,基于Java虚拟机,还诞生了一大批优秀的语言,如Scala。基于Scala构建的大数据平台现在也是生龙活虎。可以说,目前Java作为一个生态系统,已经非常健壮了。当然,我认为这很大程度上归功于开源社区的支持,大家的无私奉献。这些都是Java语言本身的环境优势。

而就Java语言而言,我认为它最大的优点是简单。不夸张地说,Java语言是我见过的最简单、最易理解的计算机语言了。但任何事物都具有两面性,Java也不是十全十美的。[阅读全文]
钟声:我的Java!越过山丘
业界知名程序员、架构师,Need100加密算法设计者,JOpenDNS的创始人

当年我是VS程序员,2000年被微软无情抛弃时,我徘徊过,到底继续跟着微软跑还是甩了它!当时兜里没钱,没法再花精力去学习除了名字很像其他都不一样的VS.net……

既然甩了微软,那我为什么不直接选一个跨平台的语言呢?!就这样我没有选择IDE更漂亮的其他语言,选择了IDE还是NotePad的Java。

如今Java已经用了15年了。这15年中我也曾想过换掉它,直到我用.NET在开发服务器端程序找不到北,用Win2000频遭黑客攻陷,程序经常无故假死时,才知道,走过这么多风风雨雨都让我们稳如泰山的原因,是因为它的名字叫Java![阅读全文]
技术篇
王继辉:Java开发与技术挑战——关于技术的技术思考
网名河西三十年,北京光合原品科技有限公司联合创始人&CTO

在Java应用开发中,逐渐开始使用设计模式的思想来进行关键模块的开发,单态模式、组合模式、适配器模式、观察者模式等等面向对象的特征也得到很好的发挥。基于Java架构设计中更多通过机制性保证来构建一个比较稳健可扩展的系统,比如无状态设计、同步异步分离、动静分离、模块服务化、多级缓存等等。

在技术选型上,像软件商店、移动支付平台,除移动端使用Android实现,服务器都可以使用Java进行实现,这样一方面可以重用原有程序积累,又可以通过Java的丰富开源组件来加快开发速度。但技术方面的选择上不再以Java为唯一技术选择,后端存储层面,可以把关系型数据库、非关系型数据库以及文件系统进行整合考虑,不再把单一的“Java+关系型数据库”作为软件系统的唯一设计标准。后台任务服务以及程序逻辑都可以用Python、Shell脚本进行实现也非常好。多种技术组合使用可以充分发挥每一种技术的优势,这也是技术选型的一个重要原则。[阅读全文]
杨旭钧:Java 8与Apache Ignite
具备多年银行、保险行业金融系统的规划、设计和开发经验,曾就职于VMware和Accenture两家公司

从JDK发布的历程来看,JDK1.6添加了对脚本语言:Ruby、Groovy、JavaScript的支持,JDK7添加了对集合(Collections)的增强支持,而Java8在JDK7之上进一步大胆地创新,引入了Lambda框架、Streams、函数式接口模块等,这里我们重点讲一下Lambda框架。Java8的最大亮点就是引入了Lambda表达式,通过Lambda表达式提供闭包的方式,使集合(Collection)库更加容易遍历、过滤、从一个集合中抽取数据,特别是集合(Collection)操作充分利用多核编程的特性,能够大幅提升并发操作的性能。

目前在开源世界中支持Java8新特性的应用框架和软件平台逐渐增多(例如ApacheIgnite工程),相信未来会有越来越多的Java应用迁移到Java8平台上,充分享受Java8新特性带来的舒适体验感。[阅读全文]
程晓明:Java内存模型的历史变迁
Java软件工程师,关注并发与NIO,《深入理解Java内存模型》的作者。

从JDK5开始,Java使用新的内存模型,新内存模型完全抛弃了旧内存模型的主内存和工作内存的概念,也抛弃了旧内存模型的8个内存操作。也就是说,新内存模型完全是重新设计的。

新内存模型引入了一个新的概念,叫happens-before。happens-before的概念最初由LeslieLamport在其一篇影响深远的论文(《Time,ClocksandtheOrderingofEventsinaDistributedSystem》)中提出。LeslieLamport使用happens-before来定义分布式系统中,事件之间的一个偏序关系(partialordering)。LeslieLamport在这篇论文中给出了一个分布式算法,该算法可以将该偏序关系扩展为某种全序关系。[阅读全文]
张玉宏:那些年,Java程序员用过的开发工具
张玉宏博士,现执教于河南工业大学,中国计算机协会(CCF)会员,ACM/IEEE会员,主要研究方向为高性能计算、生物信息学。

代码编辑器,对于程序员来说,就像勇士对剑的追求一样,一把可随心驾驭且锋利无比的宝剑可极大提升勇士的战斗力,而一款好用Java开发工具,亦能极大提高程序员的开发效率。

程序员是一个比较挑剔的群体,对开发工具的追求可谓是五花八门,精益求精。作为Java 程序员,很容易患上“开发工具选择综合症”。自1995年Java诞生以来,20载一路走来,用于开发Java程序的工具很多,“器”竞码农择,留存皆精品。为了方便Java初学者选择开发工具,本文介绍7款备受程序员青睐的开发工具,从基础到高级,涵盖各种平台,欢迎大家试用体验。[阅读全文]
彭晨阳:Java框架研发思考
Jdon.com创办者和版主,软件开发设计咨询从业20年,10余年Java开发经验

我大概谈谈Jdon框架的开发经历和我的思想转变发展过程。

最初开发Jdon框架的想法是因为Web流行导致的三层直至多层架构对开发流程的影响。现代多层架构将后端架构分解为多个层次,灵活性得到提高,因为你维护拓展任何一个层都很少影响其他层,这也是设计模式或面向对象思想的最初初衷吧。但灵活性也是有副作用的,副作用是带来了复杂性,简单的数据增删改查四个功能需要经过三层,那么就可能产生12道工序的开发。

因此,我希望能够在不牺牲多层架构基础上提高快速开发的能力,于是需要集成表现层、业务层和持久层等现有框架的集成整合能力。[阅读全文]
宁志伟、李嘉鹏、李三红:云上Java System Profiling与Debugging——蚂蚁金服观察与实践
宁志伟花名九居,JVM技术专家;李嘉鹏花名寒泉子,高级研发工程师;李三红,支付宝JVM专家。前IBM Multi-tenant JVM项目技术主管。

从1995年Java1.0beta发布到现在,整整过去了20年。Java的发明源于嵌入式领域,不过后来Java的发展,出乎意料地在企业级应用领域占据了几乎统治的地位。阿里巴巴以及支付宝(就是后来的蚂蚁金服),绝大部分的业务代码都是Java编写的。

在Java20岁生日这年,我们用这篇文章记录蚂蚁金服内部,在金融云环境下Java系统的Profiling和Debugging经验与实践,与大家分享交流,有非常特别的意义。希望读者能够从中借鉴到一些解决问题的思路。[阅读全文]
刘建、郭理勇、毛宏:搜狗商业平台Java技术实践
刘建,搜狗架构师,商业平台基础平台负责人;郭理勇,搜狗高级研发工程师,商业平台网盟广告技术负责人;毛宏,搜狗高级研发工程师,商业平台基础服务技术负责人。

搜狗商业平台负责搜狗广告业务,涵盖搜索、网盟、无线、品牌等业务线,面向几十万广告主和广告代理商,提供十亿级以上在线广告管理及相关支持,提供近百亿的在线报告。其中,基于Java的业务系统在70%以上。从底层缓存、会话、调度、通信交互,到提供给客户的API接口,从数据库访问、离线大规模数据处理到实时计算,都依托于Java技术。在我们内部长期的实践过程中,Java技术已经逐步自发地形成了一个生态系统。

Java生态圈非常庞大而丰富,我们在长期的实践过程中,自主或基于Java开源组件进行二次开发和优化,构建了搜狗商业平台完整的Java技术框架。[阅读全文]
王广帅:Java在游戏服务器开发中的应用
网名wgslucky,现任北京触云科技有限公司服务器端技术主程

随着游戏市场的兴起,特别是网页游戏、手机游戏的崛起,对游戏开发技术的需求越来越多。网络游戏开发是一个庞大的体系,总体来说是客户端与服务器端。客户端是玩家接触的游戏图像显示端,服务器是处理游戏运行中的各种数据,由于一台服务器要支持众多玩家的请求,所以服务器的性能高低决定了同一个游戏的用户数量。

我们公司选择使用Java做服务器开发语言,主要原因是:1.Java是跨平台的,方便部署;2.Java是安全的高级语言,可以提高开发效率;3.Java是面向对象的,代码可以重用;4.Java的分布式应用。[阅读全文]
李林锋:Java在电信软件领域的技术实战
有7年NIO设计和开发经验,现任华为软件平台架构部架构师,《Netty权威指南》作者。

在2005年之前,电信软件主要使用C和C++进行开发,由于C和C++开源框架非常少,加之那个时代开源社区并不成熟,大部分的软件系统都由各设备提供商自己研发,或者采购国际大厂的相关产品,例如Oracle、IBM的平台中间件和服务器软件。

2005-2008年间,Java开始逐渐替代C/C++,成为电信软件开发的首选语言,在这期间最显著的特点就是涌现出了一大批成熟的Java开源框架,它客观上也促进了Java语言的推广。

2009年至今,分布式、大数据和云计算开始兴起,尽管小众语言在此阶段开始百花齐放,但是Java语言依旧是主流。在整个技术演进过程中,出现过许多技术和开源框架,本文针对电信软件的特点,对典型Java技术在电信软件领域的应用进行深入剖析。[阅读原文]


白小勇:关于Java框架Vert.x的几点思考
炼石网络CipherGateway创始人及CEO,专注公有云安全。

在Java20周年之际,Java用户对Java的抱怨与日俱增,比如内存管理、笨重的JavaEE等。而Java依然在TIOBE编程语言排行榜上艰难的维持第一名的位置,随着一些新编程语言的兴起,这个领域目前呈现一种混战的态势。

在这种背景下,Java届的小鲜肉框架——Vert.x于2015年5月7日发布了3.0-milestone5版本,距离计划6月22日发布Vert.x3.0.0-final越来越近了,Vert.x用户组的粉丝们近期已经迫不及待地在宇宙中心(注:北京五道口)组织了一次Vert.x中国用户组Meetup,针对Vert.x工程化开发问题以及Vert.x3新特性展开了探讨。Vert.x(http://vertx.io/)是一个基于JVM、轻量级、高性能的应用平台,非常适用于最新的移动端后台、互联网、企业应用架构。[阅读全文]
Java作为当今最流行的编程技术之一,它的出现不仅给软件产业带来了深远影响,也改变了许多人的人生轨迹。

关注CSDN官方微信(CSDNnews,请扫右侧二维码)和@CSDN官方微博

欢迎继续投递Java稿件(发邮件至xiamz@csdn.net)。