Download - Michael Chen Mix Language Development
![Page 1: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/1.jpg)
混合语言开发陈金洲,Buffalo AJAX作者,ThoughtWorks
![Page 2: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/2.jpg)
...语言?
C JavaScript Haskell Eiffel
C++ Ruby ActionScript CSS
C# Python HTML VB
Erlang Delphi Java ...
![Page 3: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/3.jpg)
没有人喜欢...多语言开发?
![Page 4: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/4.jpg)
![Page 5: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/5.jpg)
Java + SQL + JavaScript + CSS > 1
![Page 6: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/6.jpg)
Java + SQL + JavaScript + CSS > 1
是的,JavaScript也是编程语言。
![Page 7: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/7.jpg)
![Page 8: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/8.jpg)
VB/Delphi + SQL > 1
![Page 9: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/9.jpg)
软件开发2.0?
![Page 10: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/10.jpg)
软件开发2.0?
![Page 11: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/11.jpg)
![Page 12: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/12.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/13.jpg)
混合语言开发 = 软件开发0.9
![Page 14: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/14.jpg)
大多数系统采用一种以上的编程语言
![Page 15: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/15.jpg)
...你已经在进行混合语言开发
![Page 16: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/16.jpg)
⋯⋯但是,为什么?
![Page 17: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/17.jpg)
请将一个类按其任意属性进行排序。
![Page 18: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/18.jpg)
静态语言实现
更多...
![Page 19: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/19.jpg)
Java
![Page 20: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/20.jpg)
Ruby
![Page 21: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/21.jpg)
...因为更简单。
![Page 22: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/22.jpg)
按ID编辑人员信息
![Page 23: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/23.jpg)
Java
![Page 24: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/24.jpg)
Ruby
![Page 25: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/25.jpg)
...因为减少复杂性。
![Page 26: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/26.jpg)
你的系统需要支持更大并发
![Page 27: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/27.jpg)
![Page 28: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/28.jpg)
![Page 29: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/29.jpg)
Apache VS YAWS
![Page 30: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/30.jpg)
...因为达到同样效果实现不再复杂
![Page 31: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/31.jpg)
![Page 32: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/32.jpg)
为什么?
![Page 33: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/33.jpg)
为什么?
因为更简单。
![Page 34: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/34.jpg)
我们...要摒弃旧语言?
![Page 35: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/35.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/36.jpg)
CLR
C#VB.NET
![Page 37: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/37.jpg)
CLR
C#VB.NET
Ruby.NET
![Page 38: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/38.jpg)
CLR
C#VB.NET
Ruby.NET
IronPython
![Page 39: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/39.jpg)
![Page 40: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/40.jpg)
![Page 41: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/41.jpg)
JVM
![Page 42: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/42.jpg)
J...VM?
![Page 43: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/43.jpg)
J...VM?
JRuby
![Page 44: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/44.jpg)
J...VM?
JRuby
Jython
![Page 45: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/45.jpg)
J...VM?
JRuby
Jython
JavaScript
![Page 46: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/46.jpg)
“The legacy of Java will be the platform, not the language. ”
--Martin Fowler
![Page 47: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/47.jpg)
有哪些类型?
![Page 48: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/48.jpg)
混合语言开发类型
•作为补充脚本•宿主语言 - 编程语言•参与构建过程,成为产出的一部分•作为跨系统连接部件•提供给第三方使用
![Page 49: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/49.jpg)
作为补充脚本
•Ruby作为构建脚本•Python编写验收测试•Perl于遗留系统通过http交互生成文件
![Page 50: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/50.jpg)
编程语言 - 宿主语言
•JRuby on Java (Ruby on rails)•IronRuby/Ruby.NET on CLR
![Page 51: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/51.jpg)
编程语言 - 宿主语言
•JRuby on Java (Ruby on rails)•IronRuby/Ruby.NET on CLR
![Page 52: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/52.jpg)
![Page 53: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/53.jpg)
5个人。5周。
![Page 54: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/54.jpg)
参与构建,成为输出的一部分
•HTML + JavaScript + CSS•以及...Flash•JNI•VB + SQL, C + ASM...
•C/Erlang服务器端
![Page 55: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/55.jpg)
跨系统连接
•DLL, COM, SO•WebService, REST, RSS
![Page 56: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/56.jpg)
提供第三方使用
![Page 57: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/57.jpg)
![Page 58: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/58.jpg)
![Page 59: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/59.jpg)
![Page 60: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/60.jpg)
•...你自己的DSL
•mysql-python, PyQT ...
![Page 61: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/61.jpg)
但是!不要滥用!
![Page 62: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/62.jpg)
仅当混合语言能够让工作更简单
![Page 63: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/63.jpg)
任务
开发一个实时聊天室系统,可以被嵌入到其他网站使用
![Page 64: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/64.jpg)
•无刷新。•低延迟。•大并发。
需求?
![Page 65: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/65.jpg)
技术选择
•Erlang (C/C++/Python)•(J)Ruby on Rails•数据库
![Page 66: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/66.jpg)
解决方案
•无刷新 - AJAX•低延迟 - Bidirectional Stream over HTTP•高并发 - Erlang
•网站:Ruby On Rails•第三方/遗留系统集成:Java/JRuby
![Page 67: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/67.jpg)
如何开始?
![Page 68: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/68.jpg)
选择一种每日非工作脚本语言
写文章,写网站,写测试...
![Page 69: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/69.jpg)
测试驱动学习
![Page 70: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/70.jpg)
尝试用新语言解决实际问题
•并纳入构建中
![Page 71: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/71.jpg)
挑战
![Page 72: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/72.jpg)
整合
•测试所有的东西• 是的,JavaScript也应该被测试
•持续集成
![Page 73: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/73.jpg)
![Page 74: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/74.jpg)
眼界
语言熟练度?
![Page 75: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/75.jpg)
眼界
可伸缩性
可维护性
可扩展性
![Page 76: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/76.jpg)
规范
•REST, WebService•采用成熟协议规范使得多语言之间整合更加容易
![Page 77: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/77.jpg)
...不要重新发明轮子
•大多数复杂的问题或许早已被解决
![Page 78: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/78.jpg)
工欲善其事 必先利其器
![Page 79: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/79.jpg)
单一语言的时代已经过去
![Page 80: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/80.jpg)
![Page 81: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/81.jpg)
你早已身处混合语言开发
![Page 82: Michael Chen Mix Language Development](https://reader034.vdocument.in/reader034/viewer/2022042700/5554efd5b4c905bb2a8b4d3c/html5/thumbnails/82.jpg)
谢谢!陈金洲,Buffalo AJAX作者,ThoughtWorks