Download - 09 julia 开源移动开发框架
为什么Javascript比Java更靠谱
11年10月21日星期五
Java/XML = Android
• Java本身的争议性
• Android类库设计:Subclassing
• XML事实上是为了机器间交流而设计的
11年10月21日星期五
Java
• 直到2.2才有了JIT,而且内存紧张的时候就不起作用
• Eclipse总有让人抓狂的理由
• met/src/cc/miankong/julia/...我们都是cd ../../../的“爱好者”
11年10月21日星期五
Javascript
• 要么正在使用,要么正在学习使用• 更好的跨平台兼容性• 动态类型,GUI开发表达能力更强
• 好用的编辑器很多• 使用Chrome就可以调试
• 缺点就是Julia的机会
11年10月21日星期五
Android类库
• ViewGroup到底是不是View?
• Subclassing:糟糕的选择
• Smalltalk没有选择subclassing
• iOS没有选择subclassing
11年10月21日星期五
Android类库setPositiveButton( android.R.string.ok, new AlertDialog.onClickListener() { public void onClick( DialogInterface d, int which) { ... }})
多余的onClickListener类。设计模式?其实这只是Java语言的限制带来的无奈选择。
11年10月21日星期五
Julia同样的功能只要在Controller里面写个方法就可以了touched: function(what) {
if (what === “1”) {
// ok
}
// cancel
}
11年10月21日星期五
XML
手工编写XML就是一种折磨<?xml version=”1.0” encoding=”utf-8”?><shape xmlns:android=”http://schemas.android.com/apk/res/android”android:shape=”rectangle”> <gradient android:startColor=”#414141” android:centerColor=”#202020” android:endColor=”#080808” android:angle=”270” /></shape>
11年10月21日星期五
Julia
HTML5/CSS3表达View<div class=”btn” data-touchable=”takePicture”>
<label class=”cam-gradient”></label>
</div>
11年10月21日星期五
Android的ListView
• Adapter模式反而造成编写大量重复的粘合代码
• 强类型特性造成了几乎每个ListView都需要编写自定义子类
11年10月21日星期五
11年10月21日星期五
Model + Template<ul class="table">
! ! {% for(var i=0; i < x.length; i++) { %}
! ! <li data-touchable="pushProfileView"
! ! ! data-user="{{ x[i].gid }}:{{ x[i].screenName }}">
! ! ! {% if (x[i].profileImageUrl) { %}
! ! ! ! <img src="{{ x[i].profileImageUrl }}">
! ! ! {% } %}
! ! ! <div><label>{{ x[i].screenName }}</label></div>
! ! ! <span class="more"></span>
! ! </li>
! ! {% } %}
</ul>
11年10月21日星期五
Model + Template
类似JSP一样的网页模版,实现了Model到View的灵活映射。
11年10月21日星期五
RESTful的ModelURL + 可选的Converter
refresh : function(postId, apiUrl) {
! ! var url = apiUrl
|| (appNamespace.HOST + "/api/met/get"),
! ! ! data = {id: postId};
! ! this.oauthREST(url, data, function(self, response) {
! ! ! self.patch(response);
! ! ! self.set({x: response});
! ! }, null);
! }
11年10月21日星期五
Julia的MVC
• 使用HTML5/CSS3描述View
• 支持REST的Model
• 类似JSP一样的Template
• 使用Delegation避免多余对象
11年10月21日星期五
Julia的SQLite接口
jsi.sqlInsert( "keyvalue", { key: appNamespace.SNAP_HINT_DISPLAYED_KEY, value: "1" }, function(lastRow){});
11年10月21日星期五
Julia的SQLite接口
• 异步操作,允许不同Table的并发读写
• 接口隐藏了多线程编程的大量重复代码• 比HTML5默认的Web Worker外加Web
Storage更加方便
11年10月21日星期五
Julia:速度优化• JS引擎的特点决定了多层次继承的代码运行速度慢,因此Julia在设计上尽可能避免了这种模式。
• 预编译的Template
• 缓存式的DOM修改方式。减少Webkit Reflow/Layout的时间
• 基于CSS3的动画
11年10月21日星期五
Julia:减低内存消耗
自动删除不显示的DOM片段。例如在NavigationView里面,除了当前正在显示的View以外,所有上级View都被清空,只保留一个DIV占位。
11年10月21日星期五
11年10月21日星期五
开源,与宣传无关
• 现在的开发者离不开开源(Python/Ruby/Apache的HttpClient)
• 任何文档都比不上源代码• 写程序就是写论文:不发表,就烂掉• 保守秘密?应用的开发不是航天科技
11年10月21日星期五
Julia
不是结束,刚刚开始开源项目不容易做。对此,做好开源项目的办法我们想到的就是和你,开发者交流探讨。 下一步我们将会把《见面》的源代码提交给大家分享。对于API定义、JS库设计的各个方面都欢迎交流。
移动开发中遇到的问题,或者是对不同开源版权的探讨,我们都欢迎。邮件列表:http://www.miankong.cc/julia/
11年10月21日星期五