Michael Chen Mix Language Development

82
混合语言开发 陈金洲,Buffalo AJAX作者,ThoughtWorks

description

中文混合语言开发

Transcript of Michael Chen Mix Language Development

Page 1: Michael Chen   Mix Language Development

混合语言开发陈金洲,Buffalo AJAX作者,ThoughtWorks

Page 2: Michael Chen   Mix Language Development

...语言?

C JavaScript Haskell Eiffel

C++ Ruby ActionScript CSS

C# Python HTML VB

Erlang Delphi Java ...

Page 3: Michael Chen   Mix Language Development

没有人喜欢...多语言开发?

Page 4: Michael Chen   Mix Language Development
Page 5: Michael Chen   Mix Language Development

Java + SQL + JavaScript + CSS > 1

Page 6: Michael Chen   Mix Language Development

Java + SQL + JavaScript + CSS > 1

是的,JavaScript也是编程语言。

Page 7: Michael Chen   Mix Language Development
Page 8: Michael Chen   Mix Language Development

VB/Delphi + SQL > 1

Page 9: Michael Chen   Mix Language Development

软件开发2.0?

Page 10: Michael Chen   Mix Language Development

软件开发2.0?

Page 11: Michael Chen   Mix Language Development
Page 12: Michael Chen   Mix Language Development

C# + XAML

VB + DLL

C + ASMJava + C(JNI)

HTML + ActionScript(Flash)

Java + SQL + JavaScript + CSS

VB/Delphi + SQL

Ruby + JavaScript + HTML

Python + HTML

Page 13: Michael Chen   Mix Language Development

混合语言开发 = 软件开发0.9

Page 14: Michael Chen   Mix Language Development

大多数系统采用一种以上的编程语言

Page 15: Michael Chen   Mix Language Development

...你已经在进行混合语言开发

Page 16: Michael Chen   Mix Language Development

⋯⋯但是,为什么?

Page 17: Michael Chen   Mix Language Development

请将一个类按其任意属性进行排序。

Page 18: Michael Chen   Mix Language Development

静态语言实现

更多...

Page 19: Michael Chen   Mix Language Development

Java

Page 20: Michael Chen   Mix Language Development

Ruby

Page 21: Michael Chen   Mix Language Development

...因为更简单。

Page 22: Michael Chen   Mix Language Development

按ID编辑人员信息

Page 23: Michael Chen   Mix Language Development

Java

Page 24: Michael Chen   Mix Language Development

Ruby

Page 25: Michael Chen   Mix Language Development

...因为减少复杂性。

Page 26: Michael Chen   Mix Language Development

你的系统需要支持更大并发

Page 27: Michael Chen   Mix Language Development
Page 28: Michael Chen   Mix Language Development
Page 29: Michael Chen   Mix Language Development

Apache VS YAWS

Page 30: Michael Chen   Mix Language Development

...因为达到同样效果实现不再复杂

Page 31: Michael Chen   Mix Language Development
Page 32: Michael Chen   Mix Language Development

为什么?

Page 33: Michael Chen   Mix Language Development

为什么?

因为更简单。

Page 34: Michael Chen   Mix Language Development

我们...要摒弃旧语言?

Page 35: Michael Chen   Mix Language Development

Research from Gartner suggests that by 2008, over 80 percent of new applications will be coded in so-called “managed runtime environments,” such as C# ...and Java , up from 60 percent in 2006. This is the way the industry is going...

IT JungleEvans Data Cases Programming Language Popularity

Page 36: Michael Chen   Mix Language Development

CLR

C#VB.NET

Page 37: Michael Chen   Mix Language Development

CLR

C#VB.NET

Ruby.NET

Page 38: Michael Chen   Mix Language Development

CLR

C#VB.NET

Ruby.NET

IronPython

Page 39: Michael Chen   Mix Language Development
Page 40: Michael Chen   Mix Language Development
Page 41: Michael Chen   Mix Language Development

JVM

Page 42: Michael Chen   Mix Language Development

J...VM?

Page 43: Michael Chen   Mix Language Development

J...VM?

JRuby

Page 44: Michael Chen   Mix Language Development

J...VM?

JRuby

Jython

Page 45: Michael Chen   Mix Language Development

J...VM?

JRuby

Jython

JavaScript

Page 46: Michael Chen   Mix Language Development

“The legacy of Java will be the platform, not the language. ”

--Martin Fowler

Page 47: Michael Chen   Mix Language Development

有哪些类型?

Page 48: Michael Chen   Mix Language Development

混合语言开发类型

•作为补充脚本•宿主语言 - 编程语言•参与构建过程,成为产出的一部分•作为跨系统连接部件•提供给第三方使用

Page 49: Michael Chen   Mix Language Development

作为补充脚本

•Ruby作为构建脚本•Python编写验收测试•Perl于遗留系统通过http交互生成文件

Page 50: Michael Chen   Mix Language Development

编程语言 - 宿主语言

•JRuby on Java (Ruby on rails)•IronRuby/Ruby.NET on CLR

Page 51: Michael Chen   Mix Language Development

编程语言 - 宿主语言

•JRuby on Java (Ruby on rails)•IronRuby/Ruby.NET on CLR

Page 52: Michael Chen   Mix Language Development
Page 53: Michael Chen   Mix Language Development

5个人。5周。

Page 54: Michael Chen   Mix Language Development

参与构建,成为输出的一部分

•HTML + JavaScript + CSS•以及...Flash•JNI•VB + SQL, C + ASM...

•C/Erlang服务器端

Page 55: Michael Chen   Mix Language Development

跨系统连接

•DLL, COM, SO•WebService, REST, RSS

Page 56: Michael Chen   Mix Language Development

提供第三方使用

Page 57: Michael Chen   Mix Language Development
Page 58: Michael Chen   Mix Language Development
Page 59: Michael Chen   Mix Language Development
Page 60: Michael Chen   Mix Language Development

•...你自己的DSL

•mysql-python, PyQT ...

Page 61: Michael Chen   Mix Language Development

但是!不要滥用!

Page 62: Michael Chen   Mix Language Development

仅当混合语言能够让工作更简单

Page 63: Michael Chen   Mix Language Development

任务

开发一个实时聊天室系统,可以被嵌入到其他网站使用

Page 64: Michael Chen   Mix Language Development

•无刷新。•低延迟。•大并发。

需求?

Page 65: Michael Chen   Mix Language Development

技术选择

•Erlang (C/C++/Python)•(J)Ruby on Rails•数据库

Page 66: Michael Chen   Mix Language Development

解决方案

•无刷新 - AJAX•低延迟 - Bidirectional Stream over HTTP•高并发 - Erlang

•网站:Ruby On Rails•第三方/遗留系统集成:Java/JRuby

Page 67: Michael Chen   Mix Language Development

如何开始?

Page 68: Michael Chen   Mix Language Development

选择一种每日非工作脚本语言

写文章,写网站,写测试...

Page 69: Michael Chen   Mix Language Development

测试驱动学习

Page 70: Michael Chen   Mix Language Development

尝试用新语言解决实际问题

•并纳入构建中

Page 71: Michael Chen   Mix Language Development

挑战

Page 72: Michael Chen   Mix Language Development

整合

•测试所有的东西• 是的,JavaScript也应该被测试

•持续集成

Page 73: Michael Chen   Mix Language Development
Page 74: Michael Chen   Mix Language Development

眼界

语言熟练度?

Page 75: Michael Chen   Mix Language Development

眼界

可伸缩性

可维护性

可扩展性

Page 76: Michael Chen   Mix Language Development

规范

•REST, WebService•采用成熟协议规范使得多语言之间整合更加容易

Page 77: Michael Chen   Mix Language Development

...不要重新发明轮子

•大多数复杂的问题或许早已被解决

Page 78: Michael Chen   Mix Language Development

工欲善其事 必先利其器

Page 79: Michael Chen   Mix Language Development

单一语言的时代已经过去

Page 80: Michael Chen   Mix Language Development
Page 81: Michael Chen   Mix Language Development

你早已身处混合语言开发

Page 82: Michael Chen   Mix Language Development

谢谢!陈金洲,Buffalo AJAX作者,ThoughtWorks