Java程序员学Ruby--从折腾开始_Ruby_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > Ruby > Java程序员学Ruby--从折腾开始

Java程序员学Ruby--从折腾开始

 2013/6/19 11:16:01  tjj006  程序员俱乐部  我要评论(0)
  • 摘要:Java程序员学Ruby--从折腾开始这篇文章信息含量不高,基本上理解为吐槽+备忘就对了。最近想自己做一点东西,但是实在厌倦了J2EE世界里数不清的xml,也在寻求一种“高效的开发语言”。基本上说到高效和敏捷,大家都在推崇RubyonRails,所以抽周末的空来尝个鲜。学新语言,我一般喜欢先配置环境,弄几个短的snippet来看看,熟悉语法。于是就需要先配置环境。Ruby本身的安装还算简单,下载一个rvm,然后安装就可以了
  • 标签:程序 程序员 Ruby Java
Java程序员学Ruby--从折腾开始

   这篇文章信息含量不高,基本上理解为吐槽+备忘就对了。

   最近想自己做一点东西,但是实在厌倦了J2EE世界里数不清的xml,也在寻求一种“高效的开发语言”。基本上说到高效和敏捷,大家都在推崇Ruby on Rails,所以抽周末的空来尝个鲜。

   学新语言,我一般喜欢先配置环境,弄几个短的snippet来看看,熟悉语法。于是就需要先配置环境。

   Ruby本身的安装还算简单,下载一个rvm,然后安装就可以了。安装后ruby本身的包和gems都会放在/opt/local/lib/ruby下。但是当我下载了一个Rails的app Rabel,尝试部署并启动时,噩梦就开始了。

   gem是Ruby包管理的一个工具,跟Maven类似。但是Java崇尚Compile Once,Run anywhere,所有的依赖管理都管理具体项目。而gem则是管理本地运行环境的,使用gem install     gem_name可以将包安装到本地。这样虽然运行具体项目会痛苦一点,却也极大避免了多个项目的依赖冲突问题。

   脚本语言都有个功能:本地扩展(Native Extension),跟Java里的JNI是一个意思。不过Java世界都崇尚pure Java,基本上依赖管理都是在jar包之间,完全是Maven可以搞定的。而脚本语言一般都秉承了UNIX世界的多模块混合的思想,经常使用本地扩展,例如xml解析,就使用libxml。安装本地库,就不是gem能搞定的事了。

   在mac下,最好安装一个port或者brew,不然得自己去make install之类的,很麻烦。port更加强大一些,但是会傻乎乎的下载重复的依赖。例如我要下载一个mysql-ruby的库,它会先下载mysql、再下载ruby,最后再下载这个库,而其实我只需要一个ruby扩展而已。当然port下载一些C语言的库是很有用的,如sqlite3、libxml之类,省去了编译和查找依赖的过程,这个过程对于Java程序员来说真是太痛苦了。

   在尝试使用rails server启动Rabel时,提示找不到nokogiri。使用gem install nokogiri安装之,发现缺少libxml依赖。后来使用port安装libxml之后,依然找不到。最后升级ruby版本之后,问题解决了。

   gems安装比较好的地方是,即使没有安装成功,它也会将临时文件保存在/opt/local/lib/ruby/gems/1.8/gems/gem_name目录下,供分析用。


ruby 的 gems 很普及,为什么 java 的 maven 用的不是很普及呢?

ruby的gems已经是集成到sdk里了,maven没有等同的地位。
这种境况是由于java在maven出现以前就有完备的包管理机制(classloader,package),开源社区也普遍遵循命名规则,没有依赖管理也不至于很惨。

ruby就不行了,用的还是很原始的include模式,没有gems世界会乱套的。
rubyer是不得不用gems,javaer是可用可不用,或者用ant、ivy、grape、buildr都行。当然得承认maven的复杂度比 gem要高许多(依赖管理只是maven要解决的一小部分问题,它着眼于整个项目过程),实施过程遇到的问题也会更多,所以maven的推行是一个很漫长的过程。
发表评论
用户名: 匿名