Javascript程序员也可以开发iOS原生应用

标签: javascript 程序员 开发 | 发表时间:2012-03-19 02:32 | 作者:
出处:http://php.js.cn/

    主要方向是前端的我曾经也想过学学iOS的Object-C或者Android的Java。但是写习惯Javascript这种弱类型的脚本语言,突然去写严谨的C和繁琐的Java变成一件很煎熬的事情。所以这个学习过程就逐渐被搁浅了。

    HTML5在移动设备上的普及使得前端程序员开心了。自己的网站稍微改改,使之能够适应移动设备上较小的屏幕,然后再加上几个meta信息,就可以通过iOS上Safari的“添加至主屏幕”功能在桌面上添加一个叫做"Home screen app"的App了。这比学习Object-C => 用XCode开发app => 提交到app store => 等待苹果通过 => 从app store下载应用 这个漫长的过程要来的简单许许多多。而且完全不用看苹果的脸色。我认为这种方式在以后将会越来越流行。

    但是HTML5创建的Home screen app有几个不足之处:

  • 无法调用很多系统资源 (虽然现在某些接口可以提供地理位置调用,重力传感器信息调用,但比起原生程序来说还是太少了)
  • 无法控制设备旋转,所以必须要让网站适合设备竖看和横看
  • 虽然HTML5可以实现离线浏览,但是操作起来比较复杂
  • 无法通过app store来推广

    我认为HTML和Javascript这些技术在未来很长一段时间里面都是很主流的语言,而且应该会得到越来越多的应用(btw,很期待webOS发展壮大啊)。所以国外很多公司就瞄准了这块市场,纷纷开发出使用Javascript技术来写Native App的解决方案。其中比较流行的有 PhonegapTitanium

    Phonegap是提供一个webview(浏览器界面),使得你可以在里面载入自己的HTML文件,执行JS程序等。然后Phonegap提供比Safari更多的接口,让你可以调用更多的系统资源。这样,Phonegap就有非常优秀的跨平台性。但是由于界面是用HTML绘制的,所以运行效率上会稍微差点(我本人无法接受)。我就不多讲了,因为我也没仔细研究过。

    而Titanium声称的Native,指的是用Javascript调用接口来生成原生的界面。程序具体的运行逻辑还是使用Javascript来实现。因为有太多的Native things,所以Titanium的某些接口只能在iOS上用,另外有一些只能在Android上用。有点违背“write once, run anywhere"的思想。不过如果写好一个平台的app,再迁移到其他平台还是比较容易的。

    我本人比较认同Titanium的思路。界面用Object-C调用系统UI来创建,保证了界面的流畅程度。我在iPhone上安装了Titanium的Kichensink (Titanium的各种接口演示程序) 。其流畅程度的确跟Object-C开发出来的程序在一个等级上。各种动画十分流畅。然后其他部分用我们熟悉的Javascript来实现。官方提供的接口足以满足绝大部分需求(当然开发大型的游戏是比较不现实的)。

    我尝试的第一个应用是做一个匿名随机聊天的app(对,EndTalk的iOS客户端)。界面用的是类似iOS上短信对话框的界面。然后通过Socket.IO与服务端的NodeJS通信。支持文字与图片。 这个需求对一个Object-C程序员来说还是挺多工作量的,但是在Titanium的帮助下,我用了一个晚上了解Titanium,另一个晚上来写app。就已经实现了主要功能。而且在真机和模拟器之间测试通过。

    另外,虽然用TItanium来绘制界面是件挺简单的事情。但是要绘制一些复杂一点的界面就有点力不从心了。不过还好Titanium推出了一个Marketplace,允许Object-C开发者为Titanium开发各种模块,提供给Javascript来调用。比如我用的那个短信界面就是一个免费的模块。哈哈,这样就可以跟其他Object-C开发者合作,开发一些应用了。大部分事情用Javascript来做,JS做不了的,就开发一个Object-C写的模块,JS调用就是了。

    虽然以前那种随便开发个app就可以在app store上赚很多钱的时代已经过去。但是越来越多的iOS客户端需求仍然得不到满足,所以目前Object-C开发者的工资都很高,很高。但是绝大部分的各种客户端都可以使用Titanium来做。比如微博客户端、B2C网站客户端、淘宝客户端、聊天软件客户端、电子图书、电子阅读器等等。

    所以,前端开发者们也可以很快速的入手iOS App开发,而且开发效率绝对比Object-C开发者快! 人力成本降低,在当前的市场中会很有竞争力。

    Javascript的应用环境其实非常多。稍微列举一下吧:网页、WebOS App、Titanium开发、Asp.NET中的JScript也算是吧、Windows的JScript脚本、Mac的Dashboard Widget、Windows的桌面小工具、最重要的:服务端的NodeJS! 欢迎补充。


0条评论     到PHP.JS.CN上围观原文

相关 [javascript 程序员 开发] 推荐:

Javascript程序员也可以开发iOS原生应用

- - php.js.cn
    主要方向是前端的我曾经也想过学学iOS的Object-C或者Android的Java. 但是写习惯Javascript这种弱类型的脚本语言,突然去写严谨的C和繁琐的Java变成一件很煎熬的事情. 所以这个学习过程就逐渐被搁浅了.     HTML5在移动设备上的普及使得前端程序员开心了. 自己的网站稍微改改,使之能够适应移动设备上较小的屏幕,然后再加上几个meta信息,就可以通过iOS上Safari的“添加至主屏幕”功能在桌面上添加一个叫做"Home screen app"的App了.

招聘 JavaScript 程序员时应该问什么问题

- rex - 一名开发
有使用过服务端 JavaScript 框架吗?. ECMAScript 和 JavaScript 的区别是什么?. 有用过 JavaScript 代码校验工具吗?. 有读过或推荐的 JavaScirpt 书籍吗?. 会为你的 JavaScript 代码写单元测试吗?. 为什么基本上所有对象都有 toString 方法?.

JavaScript开发规范要求

- - 博客 - 伯乐在线
来源: webflash 的博客. 作为一名开发人员(WEB前端JavaScript开发),不规范的开发不仅使日后代码维护变的困难,同时也不利于团队的合作,通常还会带来代码安全以及执行效率上的问题. 本人在开发工作中就曾与不按规范来开发的同事合作过,与他合作就不能用“愉快”来形容了. 现在本人撰写此文的目的除了与大家分享一点点经验外,更多的是希望对未来的合作伙伴能够起到一定的借鉴作用.

Web 开发程序员招聘

- GLORY - 云风的 BLOG
前两天在 blog 里提到了 web 前端程序员招聘的消息 , 结果这两天收到了好多热情洋溢的 email , 真是受宠若惊. 上次说的不详细,其实也没完全想好,只是之前在讨论公司架构的时候提到了这个岗位. 昨天晚上又讨论了一下,把需求细化了一些. 我个人,作为程序员,对 web 前端开发领域没有太多了解,很惭愧.

[程序员] Web开发入门(原创)

- Xinyu - V2EX
这篇文章最早发在水木web开发和IT业界板,都加精了. 原文在我的博客上,不定期会更新下内容. 顺便说下我创建的喜分分 http://www.xifenfen.com 也公测了,是一个个性化阅读,分享与收藏社区. 我读过的相关书籍发布在豆列(已更新):程序员的自我修养 http://book.douban.com/doulist/1268022/.

使用JavaScript和Canvas开发游戏(一)

- iVane - 为之漫笔
原文作者:Matthew Casperson • 编辑:Michele McDonough. 原文链接: Game Development with JavaScript and the Canvas element. 3、通过Canvas元素实现高级图像操作. 4、通过Canvas实现视差滚动. 8、JavaScript键盘输入.

15款很棒的 JavaScript 开发工具

- jiwei - cnBeta.COM
在开发中,借助得力的工具可以事半功倍. 今天,这篇文章向大家分享最新收集的15款非常有用的 JavaScript 开发工具.

使用JavaScript和Canvas开发游戏(三)

- weslleywang - 为之漫笔
原文作者:Matthew Casperson • 编辑:Michele McDonough. 原文链接: Game Development with JavaScript and the Canvas element. 3、通过Canvas元素实现高级图像操作. 6、通过Canvas实现视差滚动. 8、JavaScript键盘输入.

使用JavaScript和Canvas开发游戏(四)

- weslleywang - 为之漫笔
原文作者:Matthew Casperson • 编辑:Michele McDonough. 原文链接: Game Development with JavaScript and the Canvas element. 3、通过Canvas元素实现高级图像操作. 6、通过Canvas实现视差滚动. 8、JavaScript键盘输入.