Michael Chen Mix Language Development
-
Upload
michael-chen -
Category
Technology
-
view
859 -
download
2
description
Transcript of Michael Chen Mix Language Development
混合语言开发陈金洲,Buffalo AJAX作者,ThoughtWorks
...语言?
C JavaScript Haskell Eiffel
C++ Ruby ActionScript CSS
C# Python HTML VB
Erlang Delphi Java ...
没有人喜欢...多语言开发?
Java + SQL + JavaScript + CSS > 1
Java + SQL + JavaScript + CSS > 1
是的,JavaScript也是编程语言。
VB/Delphi + SQL > 1
软件开发2.0?
软件开发2.0?
C# + XAML
VB + DLL
C + ASMJava + C(JNI)
HTML + ActionScript(Flash)
Java + SQL + JavaScript + CSS
VB/Delphi + SQL
Ruby + JavaScript + HTML
Python + HTML
混合语言开发 = 软件开发0.9
大多数系统采用一种以上的编程语言
...你已经在进行混合语言开发
⋯⋯但是,为什么?
请将一个类按其任意属性进行排序。
静态语言实现
更多...
Java
Ruby
...因为更简单。
按ID编辑人员信息
Java
Ruby
...因为减少复杂性。
你的系统需要支持更大并发
Apache VS YAWS
...因为达到同样效果实现不再复杂
为什么?
为什么?
因为更简单。
我们...要摒弃旧语言?
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
CLR
C#VB.NET
CLR
C#VB.NET
Ruby.NET
CLR
C#VB.NET
Ruby.NET
IronPython
JVM
J...VM?
J...VM?
JRuby
J...VM?
JRuby
Jython
J...VM?
JRuby
Jython
JavaScript
“The legacy of Java will be the platform, not the language. ”
--Martin Fowler
有哪些类型?
混合语言开发类型
•作为补充脚本•宿主语言 - 编程语言•参与构建过程,成为产出的一部分•作为跨系统连接部件•提供给第三方使用
作为补充脚本
•Ruby作为构建脚本•Python编写验收测试•Perl于遗留系统通过http交互生成文件
编程语言 - 宿主语言
•JRuby on Java (Ruby on rails)•IronRuby/Ruby.NET on CLR
编程语言 - 宿主语言
•JRuby on Java (Ruby on rails)•IronRuby/Ruby.NET on CLR
5个人。5周。
参与构建,成为输出的一部分
•HTML + JavaScript + CSS•以及...Flash•JNI•VB + SQL, C + ASM...
•C/Erlang服务器端
跨系统连接
•DLL, COM, SO•WebService, REST, RSS
提供第三方使用
•...你自己的DSL
•mysql-python, PyQT ...
但是!不要滥用!
仅当混合语言能够让工作更简单
任务
开发一个实时聊天室系统,可以被嵌入到其他网站使用
•无刷新。•低延迟。•大并发。
需求?
技术选择
•Erlang (C/C++/Python)•(J)Ruby on Rails•数据库
解决方案
•无刷新 - AJAX•低延迟 - Bidirectional Stream over HTTP•高并发 - Erlang
•网站:Ruby On Rails•第三方/遗留系统集成:Java/JRuby
如何开始?
选择一种每日非工作脚本语言
写文章,写网站,写测试...
测试驱动学习
尝试用新语言解决实际问题
•并纳入构建中
挑战
整合
•测试所有的东西• 是的,JavaScript也应该被测试
•持续集成
眼界
语言熟练度?
眼界
可伸缩性
可维护性
可扩展性
规范
•REST, WebService•采用成熟协议规范使得多语言之间整合更加容易
...不要重新发明轮子
•大多数复杂的问题或许早已被解决
工欲善其事 必先利其器
单一语言的时代已经过去
你早已身处混合语言开发
谢谢!陈金洲,Buffalo AJAX作者,ThoughtWorks