专访 Java Champion Jorge Vargas

作者:Janice J. Heiss

2012 年 3 月发布

本系列访谈聚集获得业界、学术界、Java 用户群 (JUG) 以及更大社区中 Java 开发人员特别认可的 Java Champion

Jonas Bonér
Jorge Vargas

Jorge Vargas 从 2000 年起就是兼职 Java 顾问,并且从 2007 年起就是 Java Champion。他是 Oracle 技术日计划位于墨西哥城并专注于墨西哥学生开发人员社区的重要社区合作伙伴 JavaUp Java 用户群的领导者和版主。技术日计划自诞生之日起就每隔一年访问一次墨西哥。此外,Vargas 还在墨西哥全国各地大学组织 Java 开发人员活动。他特别关心将 JDK 文档翻译成西班牙文,并在其 JUG 的工作中通过 java.net JUG 社区项目寻找志愿者从事这一项目。

他参与编写了两个开源项目的代码:SimpleJ 是一个用于学习计算机编程的复古式虚拟游戏控制台和开发人员工具包,JrMan 是 Pixar 动画工作室的 PhotoRealistic RenderMan 所使用的 REYES 渲染算法的操作系统版本。

Oracle 技术网:在向公司推介 Enterprise JavaBeans [EJB] 3.0 时,您一直是“极限编程”[XP] 的实践者。请谈谈其优缺点。

Vargas:一些公司(包括一些非常大的公司)有许多系统是使用 Delphi、PowerBuilder 和 Visual Basic 等语言编写的,它们需要迁移到新技术,因为维护和上市时间非常重要。您可以想像某个公司有一个包含 400 个模块的程序,每个模块是一个可执行程序。

在新平台上创建该程序或将该程序迁移到新的平台非常复杂,因为我们所说的是数十万行代码的情况。我在为公司提供咨询服务帮助其实现这一目标时使用了如下策略:

1. 举办全方位的有关 Java 的研讨会。

2. 举办有关使用 XP 和敏捷技术构建代码的研讨会。

3. 生成主项目以基于 Scrum、一些 XP 方法和 Kanban 构建所有应用程序。

4. 构建安全性、登录、菜单、显示和图形等重要核心组件。

5. 通过提供数周时间的不带开发的咨询(他们必须学习如何做),为他们提供帮助。

6. 回答小问题或回应帮助解决问题或疑惑的要求。

7. 客户满意,我们也高兴。

这可能听起来容易,但实际上并不容易 — 这一过程要持续数月、上百个小时,但这是可以掌控的,并且通过少许反复,我们可以将旧系统的客户需求和问题转移到新系统。

地理定位和 Java

Oracle 技术网:您积极参与这样的项目:在后端和 Web 客户端涉及地理定位和 Java,提供与 Apple iPhone、RIM、Android 和 Nokia 设备的接口。您如何描述这一工作中的挑战?

Vargas:我们已着手开发 Yumbling beta 版程序,这是一个基于地理定位的应用程序,具有适用于 BlackBerry、iPhone、Android 和 Nokia 的移动客户端,以及 Web 界面。我们遇到的第一个挑战是,要设计一个简单的通用机制为所有客户端提供信息,并最小化客户端的维护工作。我尽量不通用化太多 — 以避免降低数据处理性能或出现误解。我们使用最新的 Java EE 技术 — 在过去 5 年间,我一直在教人们如何高效使用 Java EE。

现在需要在接下来的两年时间内通过一个应用程序向千百万用户展示它。

我们将需要缩短上市时间,于是提供 API 和接口向最终用户和管理用户提供此功能。该应用程序基于对实时、实际信息的关注,并准备好 API 以便由其他人的应用程序在短时间内快速利用而无损于数据和性能 — 正如老板所说的,“更快、更快、更快”。

Oracle 技术网:您还为一家公司提供了 Java 应用程序和架构,该公司为销售有线互联网、电话和电视服务的公司提供服务。

Vargas:几年前,我们曾为一家为有线互联网、电话和电视制作软件的公司提供支持。该公司通常使用 C 程序提供供应基础架构以及对设备的监视和控制。在这一案例中,我们利用了 Java EE 的强大功能,而不是使用 Java SE,创建了多线程程序以提供我们构建、测试和部署的服务。

我们使用了多线程进程来检测基础架构中欺诈性和异常的值并收集信息。同样,我们创建了一些 Web 应用程序来显示和配置此进程中的所有数据。在这一案例中,我们使用了 Java EE 6 和 S/B GlassFish Server 开源版 3.x 版本。

虚假创新

Oracle 技术网:您在博客上写过“虚假创新”,指组织或个人进行创新并非是因为该创新确实可帮助他们或者有用,而是出于其他原因。您能给我们解释一下吗?

Vargas:有些人希望“创新”是因为他们在杂志上看到某项创新或在俱乐部遇到新的想法。如果这有助于他们发现组织中的实际问题,那么可能很好,但如果他们只是想自娱自乐地实现一个通常成本高昂的新的解决方案,可能就不好了。我通常建议做一个简单研究,看看所建议的创新是否适合他们的组织,并从这里开始着手。

我认为如果我们所有人在编程时只想‘我需要做尽可能最简单的程序’,我们会更快乐、更成功。”


Jorge Vargas
Java Champion

Oracle 技术网:您还讲到了“误用的经验”,指经验丰富的开发人员可能更擅长解决问题而不是避免问题。如何缓解这一趋势?

Vargas:我认为如果我们所有人在编程时只想“我需要做尽可能最简单的程序”,我们会更快乐、更成功。有些程序员以为程序越复杂越好,不能将其经验用在编写更精简的代码上。

Oracle 技术网:《Java Concurrency in Practice》一书的作者,Oracle 开发人员 Brian Goetz 写道:“通常在 Java 应用程序中编写快速代码的办法是编写傻瓜代码,即直接、干净且遵循最明显的面向对象原则的代码……因为编译器是由受计划和时间预算限制的人编写的,编译器开发人员将其精力集中在最常用的代码模式上,因为正是这些地方能让他们获得最大成效。因此如果您使用直接面向对象的原则编写代码,那么比起编写那些看起来很聪明但编译器却无法有效优化的盘根错节、破解的位拆裂 (bit-banging) 代码来说,您能够获得更好的编译器优化。因此,干净的傻瓜代码通常比真正聪明的代码运行得更快。”您对此作何感想?

Vargas:我同意。他说的傻瓜 代码可能是指获得标准结果的“标准”代码,是与非常具有创新性、想像力的“非凡”代码相对的。编写软件时,大部分时间我们不是在试图发射登月火箭。我会说,“第一个程序是要知道如何做,然后运行集成测试并在此基础上继续。”我认为 Brian 想传递的消息是我们无需改进已经表现不错的代码。有些程序员在编码上花费大把时间是因为他们想要绝对最佳的程序,但并不总是有必要这样费神费力。

Oracle 技术网:您已注意到,墨西哥的不同开发人员社区在使用哪些 IDE 方面或者在一般如何最好地开发软件方面有时相互冲突。请给我们谈一谈。

Vargas:遗憾的是,人们有时认为自己的社区优于其他社区,与其他社区处于“交战”状态,因为他们认为自己有最好的框架、IDE 或软件开发技术。显然,我认为这只是因为某种框架是最有名的、最新的或是流行的,但它不是人们唯一使用的东西。每个问题都需要独特的解决方案。我们可能偏好某些技术,但我们并不是决定哪种 IDE 或框架将永远存在或最适合每种情况的专家。

比较墨西哥和美国程序员

Oracle 技术网:您在美国和墨西哥的 IT 部门都工作过。能否谈谈它们之间的不同?

“在美国,开发流程比在墨西哥更有秩序和组织。我不知道他们是不是总是使用最佳流程来设计项目,但美国人更有组织性。”

Jorge Vargas
Java Champion

Vargas:这个问题问得好 — 我认为有许多不同。我认为在墨西哥的主要问题在于如果你花了几个月设计一个简单项目并生产出某种与用户要求不同的东西,到头来你可能需要无据可依地凭空进行开发。在美国,开发流程比在墨西哥更有秩序和组织。我不知道他们是不是总是使用最佳流程来设计项目,但美国人更有组织性。”我更喜爱敏捷技术。

在墨西哥的另一个问题,也是人们在不断讨论的问题是,程序员并未专注于编程或学习,而是在社交网络和游戏之类的事情上浪费时间。在美国,程序员及其老板彼此之间似乎比在墨西哥有更多信任。在这两个国家,我们都犯错误,使用不同的 IDE 用于不同目的,不使用连续集成技术,都对测试及其修改之间的时间不够重视。

鼓励墨西哥青年提升 Java 技能

Oracle 技术网:请谈谈您在鼓励墨西哥青年提升 Java 技能方面的努力。

Vargas:好,我喜欢在大学召开会议,谈一点 Java 和技术之后,谈谈工作和与会者的人生目标和收入。通常我不在大城市演讲,因为我认为我们需要提高墨西哥所有城市的知识水平。在大学里,人们找工作并不轻松。我们谈到如果他们拥有更多 Java 知识和技术,我们可以一起工作。年轻人可能非常热情,现场和外包工作的青年程序员我都有过 — 这是他们非常有趣的地方。

除了召开会议之外,我还发布 Web 页面和创建 JUG,但遗憾的是,这些 JUG 只持续几个月,或者顶多可能两年,因为学生们离开大学后,没有时间或兴趣继续参加他们学生时代的 JUG。

Oracle 技术网:墨西哥(或者更笼统些,“拉美”)文化是否趋向于鼓励一种不同的编程风格?

Vargas:我们可以概括拉丁美洲的一些事情,但也存在许多差异。可以分为不同区域,如墨西哥、巴西、阿根廷和其他拉丁美洲地区。我认为因为这些地区的社区规模、教育风格以及 JavaOne 的影响,巴西和拉美人一般从开源的角度来看待软件。在阿根廷,更重视专有软件(IBM、Oracle 等),他们瞄准欧洲和美国市场。在墨西哥,人们既关注开源软件也关注专有软件 — 我们瞄准本地和美国市场。在巴西,市场相当局限于本地。

Oracle 技术网:关于墨西哥和拉美开发人员,您有没有什么希望美国的开发人员更好地了解的吗?

Vargas:美国 Java 开发人员不需要对我们有更好的了解,但他们在设计我们使用的工具和文档时应把我们放在心上。我们只能使用他们生产的东西 — 别无选择。

Oracle 技术网:一般来讲,您会如何帮助刚出校门的年轻墨西哥 Java 开发人员准备他们的第一次应聘面试和职业生涯?

Vargas:在学习期间中,我们鼓励他们创建实际系统 — 而不仅仅是学校的项目。他们需要找他们可以满足其实际需要的小公司或社会和 NGO 组织,显然不如专业程序员有效率,但对双方都有好处。有了这个经验,新手程序员可以得到好的应聘面试机会,因为他们可以展示曾如何工作让程序发挥功能,并出示一些文档展示他们曾如何帮助组织。他们还需要持之以恒地阅读 — 每天至少 30 分钟,以便了解 Java 领域的所有技术变化和机会。

Java 出人意料之处

Oracle 技术网:关于 Java 平台的发展,最令您感到吃惊的是什么?

毫无疑问,我最吃惊的是基于 JVM 的新语言的诞生,这些语言有着不同的关注对象和风格,可应对软件创建中的不同需求和挑战。”

Jorge Vargas
Java Champion

Vargas:毫无疑问,我最吃惊的是基于 Java 虚拟机 [JVM] 的新语言的诞生,这些语言有着不同的关注对象和风格,可应对软件创建中的不同需求和挑战。在 JVM 内部运行 JavaScript 非常好。

Oracle 技术网:您希望使用 Java 实现哪些目标?

Vargas:下一步我们希望构建更多核心以便为移动应用程序提供服务,当然,使用的是 REST 服务与 GET 调用。您可能会问,“为什么不用 EJB 3.0 或 3.1 呢?”答案是,对于这些类型的应用程序,我们绝对必须使用轻型、非常快速的简单服务。

Oracle 技术网:您觉得编程过程的哪个方面最有趣?

Vargas:我想是在开发阶段,因为这是测试设计和设计测试的时刻。这可能听起来像是绕口令,但事实如此。如果您可以轻松、更快速地编写代码,您的设计就是好的。如果您要编写代码,则在编写之前先创建测试。

Oracle 技术网:对您而言,关于 Java 编程语言最重要的技术见解是什么?

Vargas:首先,要了解如何使用 Swing 和 Abstract Window Toolkit [AWT] 构建良好的可视化界面,因为这促使我了解许多 Java 概念。其次,始终考虑如何在编码中处理好并发问题。第三,套接字,套接字 — 我们在现实 Java 领域有套接字,我们需要它们并且必须实践它们。

Oracle 技术网:对您来说必不可少的 Java 类是什么?

Vargas:String 和 Integer — 您可以将其用于任何事物,您需要了解它们。但我认为我首选的接口是 List 和 Map。

Oracle 技术网:您能否描述一下编写 Java 代码的过程?

Vargas:我喜欢一些敏捷技术 — 我根据项目、客户和技术的类型来使用它们。以下是基本过程:

首先,我必须了解客户及其需求和观点。其次,记下在编写软件过程中涉及的风险和机遇。第三,简单地规划一下我们可以采纳的工具、IDE、框架和其他组件。第四,记下用户案例中的所有需求。

第五,对用户案例进行分类和划分优先级,以使项目可视化。第六,在案例中反复工作并向客户展示,并在测试和生产环境中进行高质量的检查和部署。第七,时间用完、案例结束或资金用完后停止这一过程。

另请参见