Qcon上海2014

不仅仅是Java

专题出品人: 
专题日期: 
星期四专题

行将20岁的Java正值壮年,今时的Java已不同往日,Java 8让语言自身有了大幅度的翻新,Clojure、Scala、Groovy等诸多新语言让抱怨Java冗长的人有了其它的选择,Hadoop、Spark等不断涌现的框架屡屡更新着我们对于软件开发的认知,围绕着Java的生态系统蓬勃发展;Java程序员们对于Java开发的理解也再日益精进,诸如性能调优、垃圾收集之类曾经的高级话题已经逐渐成为人们日常工作的一部分。这是一个关于Java的主题,但这里有的却不仅仅是Java,你曾无比熟悉的Java将在这里展现不那么为人熟知的一面。

本次演讲将引领大家深入JVM内部,了解JVM的内部运行时表示。演讲中会介绍JVM的重要子系统,并探讨这些子系统是如何实现Java环境的,同时我们会重点关注JIT编译,以及字节码在运行时如何被翻译为机器代码。

商业智能(BI)是一套系统化技术,收集、分析各种业务数据,辅助业务决策。在这个领域里,Java一直扮演着重要的角色,有各种各样的商业以及开源的解决方案。但近年来,传统的BI技术架构越来越无法满足互联网行业日新月异的商业分析需求。借助大数据技术,百度打破了传统的BI建设方式,下一代BI呼之欲出。

在本次演讲中,你会看到百度在BI领域的探索,我们曾经研究过市面上主流的Java BI解决方案,无论是商业的,抑或是开源的。你更会看到,我们自行研发的百度Java商业运营敏捷BI平台。我们设计研发了Java社区又一款分布式大数据OLAP引擎,弥补了现有方案在大数据OLAP下的能力不足。新研发的报表引擎、NRT-ETL等BI核心组件更是保证了BI平台的敏捷性。

如果你也打算实施自己的Java BI方案,本次演讲应该让你不虚此行。

一次 clojure web REST API 项目的开发实战,介绍 real world 世界中的 clojure 编程实践。在这个项目中,我们将演示 clojure 项目的创建、构建、编码、测试的整个流程和即将用到的工具,并且直接通过代码和介绍直观地了解 clojure 语言以及它带来的优秀生产力。通过这一简单的项目,希望向听众介绍 clojure 语言、web 编程栈、社群以及我们在开发 AVOS Cloud 过程中使用 clojure 的一些感受等。为听众了解、学习乃至选择 clojure 语言作为工作语言提供一些参考。为国内 clojure 的传播贡献一分力量。

Java已经有18年的历史,Java在发展,同时它的构建工具也从之前的Make,中间的Ant,到后来独占鳌头的Maven逐渐在演变。开发人员在经历了XML作为配置构建工具的洗礼之后,基于Groovy定义的DSL构建工具——Gradle为大家带来不一样的体验,被称为Java未来的构建工具。

本演讲介绍Gradle既可以通过Maven的约定来构建Java项目,也可以像Ant一样灵活的处理和Maven约定不一致的Java项目。虽然Gradle抛弃了冗余的XML,但是我们在使用Groovy脚本和DSL编写Gradle脚本的时候,仍然有重复代码。本演讲还介绍如何利用Gradle的特性通过Project、Task在脚本级别重用代码以及通过Plugin在项目之间重用代码,编写Clean的构建脚本。

虚拟化技术在硬件, OS层面已经得到了成熟而广泛的应用。比如大家熟知的Linux Container, 可以在单一宿主系统上同时虚拟出多个容器。虚拟化技术同样可以应用于Java虚拟机。虚拟化技术可以将Java VM 虚拟为多个逻辑上的虚拟机,每个逻辑虚拟机可运行不同的Java应用程序。每一个应用程序((我们称这样一个应用为一个租户)都拥有自己独立的堆区,其资源(例如CPU, IO)使用受限于预先规定的策略,保证应用可以在相互独立的空间内运行而互不影响。同时,基础的运行时设施比如核心类库,GC, JIT等完全共享,从而帮助显著提高系统资源的利用率。

本主题探讨的是在Java业界非常前沿的JVM虚拟化技术,希望听众能够了解到构建虚拟化的JVM将会碰到的一些技术难点以及可能的解决方案, 并从中获得启发,例如,JVM运行期数据是怎么被管理、如何在虚拟化环境下进行隔离以及如何在虚拟化环境下对资源使用隔离。 

短短几年间的时间,Netty成为了Java NIO领域的首选框架,它被广泛应用于电信、金融、互联网、大数据、游戏领域/行业,几乎所有的分布式系统架构中,都可以看到它的身影,具不完全统计,目前Netty已经应用于如下产品:

  1. Hadoop的Avro;
  2. FaceBook的Thrift;
  3. Message Pack;
  4. Twitter Finagle;
  5. Zookeeper;
  6. Storm;
  7. 阿里巴巴Dubbo。

随着互联网的发展,业务规模的不断膨胀,传统基于Tomcat的MVC垂直架构模型已经无法适应业务的快速发展,需要对复杂的业务进行水平拆分和服务化,最后进行分布式部署。此时需要一个高性能的RPC框架实现服务的异步、高性能通信和调度,Netty是构建异步高性能RPC框架的首选。要深入了解和掌握高性能的分布式服务框架,熟练掌握Netty是必备的基础技能之一。

大数据时代的来临使得Netty的优势得以更广泛的发挥,在分布式集群中进行海量数据的计算、传输和汇总,高性能的异步通信框架和序列化工具是必不可少的,无论是Spark、Storm还是Hadoop,Netty都是底层通信的基础框架,深入大数据领域,精通和掌握Netty是必备的技能之一。

Netty之所以被业界广泛使用,与它成功的架构设计、高水平的代码实现息息相关,阅读Netty的源码,剖析Netty的架构实现,不仅仅可以熟练应用和掌握Netty本身,而且可以将它的设计理念应用到其它领域相关的软件架构设计中,从中汲取充足的养分。

本文从性能、可靠性、安全性、可扩展性这几个关键质量属性对Netty的架构进行剖析,使听众对Netty的架构设计有个直观和深入的了解。最后结合Netty在互联网行业的一个典型成功应用案例,来分享如何在实际工作中应用Netty。