热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

大家谈18岁的Java——李刚:Java需要引入更多的新的探索

2013年,已经进入第18个年头的Java仍然是InfoQ上最受欢迎的话题,最近的《详细分析Java中断机制》、《关于Java性能的9个谬论》、《深入理

2013年,已经进入第18个年头的Java仍然是InfoQ上最受欢迎的话题,最近的《详细分析Java中断机制》、《关于Java性能的9个谬论》、《深入理解Java内存模型》等系列文章,一直占据InfoQ阅读热榜的首位。同时,今年7月的JavaOne(购票入口)再次选择了中国,7月22-25日将在上海世博中心举行连续4天的会议,话题涵盖核心Java平台、JavaFX与用户体验、Java EE和Web服务/云,以及Java ME/Java Embedded/Java Card等技术领域。

\u0026#xD;\n

2013年,在云计算、大数据、移动互联网等话题占据了人们所有的注意力的时候,Java的状态到底如何?近期,InfoQ中文站将对业内几位资深Java项目作者与书籍作者进行采访,了解他们眼中Java的现状,以及他们对Java未来的看法。

\u0026#xD;\n

今天受邀参与采访的嘉宾是疯狂Java创始人,广州为学教育科技有限公司疯狂软件教育中心教学总监李刚老师(@疯狂Java李刚)。

\u0026#xD;\n

InfoQ:Java语言给您留下的最初印象是什么?您最初的Java项目是什么样的?

\u0026#xD;\n
\u0026#xD;\n

李刚:大约在1999年的时开始接触Java时,当时感觉Java仅仅只是在网页上做一些有趣的Applet动画, Applet可以让传统静态的HTML网页“动起来”,而且能响应用户动作,因此这些Applet动画极大地吸引了我,于是我开始学习Java语言。至于第一个Java项目,那时候还在大学读书,我所做到第一个有印象的Java项目是完全用JSP兼职做的一个客户收集、跟踪、反馈系统。当时的JSP还停留在Model 1的层次,后来看那个项目在很多地方都存在问题,所以后来对,J2EE许下的“承诺”无比欣羡,又义无反顾地投入J2EE、EJB的怀抱。

\u0026#xD;\n
\u0026#xD;\n

InfoQ:您现在接触的Java项目跟那时相比,有怎样的变化?

\u0026#xD;\n
\u0026#xD;\n

李刚:无论早期的Java项目,还是现在的Java项目,它们本身的业务规则会随着市场、客户的改变会存在一些变化。从技术实现的角度来看,现在的Java语言明显要成熟多了,无论是前端技术,还是各种中间层技术,以及各种规则引擎之类,现在的Java语言明显更加成熟和稳定。而且现在许多软件企业已经对各种开源技术进行过一些定制,往往能更快、更稳定、更大限度地适应项目的业务。

\u0026#xD;\n
\u0026#xD;\n

InfoQ:您是否会推荐您在Java项目中的年轻程序员去掌握其他编程语言?您的首选推荐语言是什么?

\u0026#xD;\n
\u0026#xD;\n

李刚:对于一个真正的程序员而言,很难永远只用一门语言。对于已经掌握了Java这种强类型、静态语言的年轻程序员而言。至少还应该掌握一门弱类型、动态语言,通过掌握两种不同类型的编程语言,这样才能更好地进行对比。实际上,弱类型、动态语言也有很多,比如Ruby。

\u0026#xD;\n
\u0026#xD;\n

InfoQ:对于一些从新锐编程语言开始入行的年轻程序员,比如Ruby程序员,您是否会推荐他们了解Java?为什么?

\u0026#xD;\n
\u0026#xD;\n

李刚:毋庸置疑,Java是一门应用最广泛、最有价值的编程语言,就目前的趋势来说,大型应用的服务端编程的首选是Java,而且目前移动互联网的Android平台的开发语言也是Java,无论从哪个角度来看,Java都是发展前景最好的编程语言,因此我推荐所有程序员都应该了解、学习Java。

\u0026#xD;\n
\u0026#xD;\n

InfoQ:JVM下多语言协作开发是否能够最大化地发挥Java自身的优势?

\u0026#xD;\n
\u0026#xD;\n

李刚:在Java平台,目前已经存在多语言协同工作,多种语言植入Java平台后能够充分发挥各自的优势。各种脚本语言之所以能够流行,是因为脚本的修改、发布更加方便。而Java在服务端,已经成为了各种脚本语言的宿主环境,为脚本语言在企业中的应用提供了稳定、灵活的基础平台。其实这对Java而言不是一种替代,而是一种补充、加强。实际上JVM已经为多语言协同运行提供了平台,不同语言可以专门用于实现特定的组件,同时这些组件都运行在相同的JVM环境下,因此不同组件之间能以透明的方式调用,就像调用本身语言的API一样。

\u0026#xD;\n
\u0026#xD;\n

InfoQ:您觉得Java语言自身存在的挑战是什么?

\u0026#xD;\n
\u0026#xD;\n

李刚:就我个人感觉来看,Java目前已经发展得比较成熟和稳定。但也许正因为这种现状,导致Java语言在各种新技术的探索,不如以前活跃。而任何一门技术,必须保持快速的生长和更新,不断注入新的血液。对于目前的Java语言来说,即使有些不成熟的探索,也会随着市场沉淀慢慢趋于理性,这样才能更好地保持Java的生命力。但Java目前最大的问题在于:Java需要引入更多的新的探索。而Oracle对Java的重视程度似乎不够,每2年一次的更新也往往很难如期发布。而且这几年开源技术社区也不够活跃,很少见到真正影响力广泛的技术。

\u0026#xD;\n
\u0026#xD;\n

InfoQ:一旦Java 8走向成熟,是否可以支持现有系统向Java 8的成熟迁移?

\u0026#xD;\n
\u0026#xD;\n

李刚:当Java 7发布之后,我们已经在第一时间升级了《疯狂Java讲义》一书,全面介绍了Java 7的各种新特性。在Java 7成熟之后,在不少软件公司的技术咨询中,我都会推荐他们去尝试使用Java 7平台,尤其是Java 7新引入的G1垃圾回收器。当Java 8真正发布后,我们也会在第一时间升级了《疯狂Java讲义》,全面介绍Java 8的各种新特性。至于在公司的技术咨询服务上,我会评估从原有平台迁移到Java 8所需的成本和风险,以及Java 8能给现有系统带来的好处。是否应该把一个现有系统迁移到新平台,往往是一个综合、折衷的考虑,很难直接给出答案。

\u0026#xD;\n
\u0026#xD;\n

InfoQ:能否谈谈目前Java开源社区的一些变化?开源社区对Java发展起到了哪些推动?

\u0026#xD;\n
\u0026#xD;\n

李刚:总体来说,现在Java开源技术社区发布的新技术太少,很少听到影响广泛的开源技术,让人感觉Java不如前几年活跃。在这方面,其实Oracle应该多做一些技术前瞻性的引导,同时也可以加强与开源技术社区的互动,从而为Java语言注入更多的血液。就像以前Sun公司,他们推出的J2EE平台,他们的各种前瞻性的设计思想和理念,直接催生了后来的Hibernate、Spring等各种开源技术。希望Oracle能通过Java发布一些更前沿、更先进的技术,这样也能激发开源社区对Java的热情,让Java不断融入新的技术热点。

\u0026#xD;\n


推荐阅读
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 【MEGA DEAL】Ruby on Rails编码训练营(97%折扣)限时特惠!
    本文介绍了JCG Deals商店提供的Ruby on Rails编码训练营的超值优惠活动,现在只需29美元即可获得,原价为$1,296。Ruby on Rails是一种用于Web开发的编程语言,即使没有编程或网页设计经验,也能在几分钟内构建专业的网站。该训练营共有6门课程,包括使用Ruby on Rails进行BDD的课程,使用RSpec 3和Capybara等。限时特惠,机会难得,赶快行动吧! ... [详细]
  • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 本文介绍了一个免费的asp.net控件,该控件具备数据显示、录入、更新、删除等功能。它比datagrid更易用、更实用,同时具备多种功能,例如属性设置、数据排序、字段类型格式化显示、密码字段支持、图像字段上传和生成缩略图等。此外,它还提供了数据验证、日期选择器、数字选择器等功能,以及防止注入攻击、非本页提交和自动分页技术等安全性和性能优化功能。最后,该控件还支持字段值合计和数据导出功能。总之,该控件功能强大且免费,适用于asp.net开发。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 本文介绍了指针的概念以及在函数调用时使用指针作为参数的情况。指针存放的是变量的地址,通过指针可以修改指针所指的变量的值。然而,如果想要修改指针的指向,就需要使用指针的引用。文章还通过一个简单的示例代码解释了指针的引用的使用方法,并思考了在修改指针的指向后,取指针的输出结果。 ... [详细]
  • springmvc学习笔记(十):控制器业务方法中通过注解实现封装Javabean接收表单提交的数据
    本文介绍了在springmvc学习笔记系列的第十篇中,控制器的业务方法中如何通过注解实现封装Javabean来接收表单提交的数据。同时还讨论了当有多个注册表单且字段完全相同时,如何将其交给同一个控制器处理。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 本文介绍了一些Java开发项目管理工具及其配置教程,包括团队协同工具worktil,版本管理工具GitLab,自动化构建工具Jenkins,项目管理工具Maven和Maven私服Nexus,以及Mybatis的安装和代码自动生成工具。提供了相关链接供读者参考。 ... [详细]
author-avatar
輕風斬情絲
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有