正文
ruby代码转Java ruby code
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
Ruby VS JAVA 到底谁比谁更强? (1)
他的顾问公司专注于Java 持久化框架和轻量级开发方法,同时他也是这些流行的Java图书的作者, Spring: A Developer's Notebook, Better, Faster, Lighter Java, 以及 Bitter Java。 1,在《超越Java》中你花费了大量的时间在Ruby上面,看起来是它像在你说那些将超越Java竞争者中出类拔萃。你觉得是什么使Ruby比 PHP,Python这类语言优越?这些都是好语言,但是都有一些缺点。对大型应用,PHP和Perl不能连续地产生可读的代码。Lisp,Python和Smalltalk这些就缺少了伟大语言好像应该拥有的催化剂。Ruby是一种好语言,和催化剂(Rails)提供了引人注目得新价值(以效率的角度)以及还在飞速地增长。Ruby不一定是最好的语言,但是它将是我所见过最有可能的。Ruby不大可能在委员会那里超过Java。它很有可能首先在一个更小但是却重要的环境中取得好成绩。这个环境也就是一个有web UI大的胖关系数据库。 2,是否Rails就意味着Ruby?其他语言包括Java难道就不能实现同样的思想?如今,Rails就是超过象Netscape之类语言的催化剂,具有Java一样的功能,可通过网络实现应用的传送。但是我认为Rails很有可能仅仅是Ruby元编程框架浪潮的第一波。 3,你的书中很多都基于典型的“将一个web接口连接到数据库”场景,Ruby的成功案例看上去也仅仅是一两个开发人员的小项目。但是你也承认了Java的重量级企业框架对一些项目的价值(即大型系统上的大型应用)。什么情况下一个项目对于RoR来说过于大的呢?如果一个RoR在那方面的特性发展缓慢呢?有Ruby和小团队你可以做很多事情。基础代码几乎都是一个人写就的,但却关乎整个公司的生计。在一些主要的公司开始进行认真的尝试之前,我们不知道你可以利用ruby或者rails到什么程度。其中一个最吸引我的事情是经济的规模,更小的规模。万一生产力的数字是真实的呢?万一确实可以得到5X的增长?那么你可以在一个部门内划分工作,将工作划分给团队中的一个。交流将很少会成为问题。管理和疏忽也很少会成为问题了。我们都知道对于一间公司增长, tipping points意味着什么。因为增加沟通和管理的级别会产生很多的障碍, 所以一间公司增长要超过1,5,10,40,甚至100倍是很困难的。但是,在这一点上, Ruby on Rails的可扩展性是非常的好。 4,你是否看到Java开发人员转向Ruby吗,还是Ruby将会给新一代的开发人员采用?我觉得两者都有可能。有开发人员不能容忍学习servlets, Spring, XML, Hibernate, Struts 然后还要学习一些 UI 粘合的框架。在Rails中,他们将会完全给释放出来。同时也有Java开发人员已经在寻找更加优势的方法,他们发现了Ruby on Rails。接受了Rails的Java梦想家们的数目是令人惊愕的,他们有Thought Works,James Duncan Davidson,Stuart Halloway 更有 David Geary。 5,难道Java本身就不能做一些事情来维持它的杰出地位?如果过于复杂和膨胀,什么可以阻止开发人员倒退到jdk 1.4?Java将会继续处于顶峰,并在企业应用上保持良好的表现,但是时间不会停滞不前。在某种意味上它终将会给替代。我们将需要一个更高级别的抽象。我认为我们最好的希望就是在JVM上做充足的投入,更好地支持动态语言, 拥抱新的事物,对于旧有的java代码,则最好是保留保守的态度。
Java 与Ruby on Rails对接
Ruby 和rail 回归框架
Ruby和 rail是非常简洁的 很容易 很丰富 ruby代码转Java我无法避免的连续看到以及听到以上这样的说法 比如说 Bill Walton 写的Rail回顾上关于Ruby的文章提到 如果我告诉ruby代码转Java你当你使用Rail开发一个Web应用程序可以比你使用一种特定的Java框架开发要快至少十倍的时候 你会怎么想?
在尝试了RnR之后 我发现这就是一个伴随旧技术的非常经典的框架
· Ruby是一种非常有力量的语言 就像Smalltalk 我选择静态语言
· 搭建的材料是被动代码生成 就像是IDE wizards或者AppFuse 我选择动态代码生成 或者是更好的——根本就不需要代码生成
· 关系数据库中心 编码发生器和ActiveRecord在表中会被首先想到 然后是在类别中被想到 我选择一种仅仅面向对象的 就像是Hibernate JPA 甚至是ODBMS
· MVC 我正在寻找比旧式MVC框架更新很好的工具
Java的问题 Java开发者
在Java的世界中 生产力是文化问题 而不是技术问题 这就是所谓的这不是Java的错 而是我们的错 我们作为Java开发者需要设计出非常漂亮的体系 以适用于任何地方的GoF模式 使得任何工具都是可再度使用的 把三层架构放到我们所有的系统中以及使用web服务器 我们不是在寻找最直接的方法 所以我们就没办法发现最直接的方法 但是Java 是一种非常简单的语言 使得我们很轻易就可以接近软件开发
Java生产力 其它的方法
解决生产力的一个方法是使用驱动模型 这就是模型环节的开发 仅仅是我们应用程序中的模型环节 就可以使用框架来生产所有的应用程序 MDA OpenXava Trails NakedObjects Roma框架和JMatter都是采用的这种方式
目标
这是所需要应用程序的主要界面
图一
基本上 应用程序推测需要做三件事情
· 列出所有准则的清单
· 创造新准则和编辑现有的准则
· 为某个类别指定合适的准则
Ruby on Rails第一次冲刺
使用RnR的第一步是创建一个新的项目 在命令行你需要输入
$ rails cookbook
现在你必须创建以及配置你的数据库
现在是时间输入你的第一行代码了 在这个例子中使用SQL代码
drop table if exists recipes;
drop table if exists categories;
create table categories (
id int not null auto_increment
name varchar( ) not null default
primary key(id)
) engine=InnoDB;
create table recipes (
id int not null auto_increment
category_id int not null
title varchar( ) not null default
description varchar( ) null
date date null
instructions text null
constraint fk_recipes_categories foreign key
(category_id) references categories(id)
primary key(id)
) engine=InnoDB;
显然你需要在数据库上面执行这些语句
最后的步骤是生成Ruby代码 你只需要执行O S框架的下一个命令
$ ruby script\generate scaffold recipe recipe
$ ruby script\generate scaffold category category
现在 你已经拥有RnR应用程序的第一个版本 并且准备运行
很少量的工作 一个简单的 创建表格 然后执行向导 让我们看看结果
Rails结果
这是应用程序的结果
图二
图三
图四
少量的工作 少量的结果
JPA on OX的第一次冲刺
继续使用OpenXava 使用OpenXava的第一步是创建新的项目
$ ant CreateNewProject xml Dproject=CookBook
现在你必须创建以及配置你的数据库
现在是时间输入你的第一步代码了 在这个例子中使用Java代码
Recipe java:
package okbook model;
import java util *;
import javax persistence *;
import openxava annotations *;
@Entity
@View(members= title; description; date; instructions )
public class Recipe {
@Id @GeneratedValue @Hidden
private Integer id;
@Required @Column(length= )
private String title;
@Column(length= )
private String description;
private Date date;
@Stereotype( HTML_TEXT )
private String instructions;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this description = description;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this date = date;
}
public String getInstructions() {
return instructions;
}
public void setInstructions(String instructions) {
this instructions = instructions;
}
}
Category java:
package okbook model;
import java util *;
import javax persistence *;
import openxava annotations *;
@Entity
public class Category {
@Id @GeneratedValue @Hidden
private Integer id;
@Required @Column(length= )
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this name = name;
}
}
最后一个步骤是生成数据库图表 你只需要执行项目中的一个小目标
$ ant updateSchema
现在 你已经拥有OpenXava应用程序的第一个版本 并且准备运行
少量的工作 简单的POJO 以及执行 更新图表 让我们看看结果
OpenXava结果
这是应用程序的结果
图五
图六
注意 用户可以创建更新 删除 从列表生成PDF 将列表输入到excel 每一列的命令 大型结果和过滤数据的支持分页 而且你可以直接部署 不需要代码 仅仅是执行一个小目标 JSR 入口上的应用程序 以及OpenXava的look feel能够适用于入口的look feel 这就是一个应用程序准备产出的第一步
少量的工作 完美的结果
观察这里RnR 与 OX之间的差别 一个冷静的观点是在RnR中 你先输入表 而在OpenXava中先输入类别
控制器
Rails引起basic CRUD的控制逻辑 你在下面可以看到
图七
另一方面 OX不会为CRUD生成任何代码 OpenXava仅有一个属性代码 可以执行CRUD和打印 将自动化配置给所有的实体 你可以书写你自己的属性CRUD逻辑 或者你可以为一个特有的实体书写详细逻辑 但是你不会为每一个实体设置控制代码 使用这种方法 你需要维护少量的代码 并且你可以改变CRUD独立单元的逻辑
Rails使用合成码 OX使用属性代码
你可以在OpenXava wiki上面学到更多的OX控制器知识
增加关联
为了规范在Ruby中从类别增加关联 你需要在category rb中书写如下代码
图八
以及在recipe rb中
图九
相当简单 但是 你要做更多的工作 你必须编译
cookbook \app\views\recipe\_form r
增加如下代码
plabelfor= recipe_category_id Category/labelbr/
%= select( recipe category_id Category find(:llect{|c| [c name c id] }) %/p:
结果是
图十
在这个环节 OpenXava中 你不得不在Category java中使用JPA规定关联
@ManyToOne(optional=false) @DescriptionsList
private Category category;
and in Recipe java:
@OneToMany(mappedBy= category )
private Collection recipes;
而且你不需要接触任何类似HTML代码 应用程序将会显示如下
图十一
你有一个为修改产生的链接或者从这里创建新类别
不增加任何辅助编码 如果使用者使用类别单元 他将获得每一个类别中准则的收集 如下所示
图十二
在这里 RnR应用程序还是不具备这种特性 你需要书写一些Ruby 和HTML代码来实现一样的结果
在这一块 RnR 和 OX的主要差别是 在OX中你不需要书写任何HTML类似的代码 事实上你连用户界面代码都根本不需要书写
精确的基础资料
Ruby on Rails指导的下一个步骤是为一种特性生成基础资料 在RnR中你不得不编译控制编码从而达到这个目的 让我们开看看
修改以及更新的方法是增加如下代码行
@recipe date = Time now
The equivalent in OX is adding the @DefaultValueCalculator annotation in model:
@DefaultValueCalculator(CurrentDateCalculator class)
private Date date;
用一种更为公开的方法获得一样的结果
在这里 尽管RnR中在控制器上放置的代码 OX中统计基础资料的代码 为了确认以及业务逻辑 一般来说是放在模型上 OX促进从控制器转移业务逻辑到模型上
RnR的相关文章中提到 我改良模型文件 所以我需要重新启动我们的web服务器 尽管使用Eclipse WTP 我只需要按一下Ctrl 加上B 在浏览器上点击刷新以便于看见OpenXava应用程序上面模型的变化
结论
Ruby on Rails 和 OpenXava之间最主要的差别是RnR是 MVC框架 你不得不书写模型和控制器 OX是模型驱动框架 你只需要书写模型 结果就是更少的代码 更好的程序
lishixinzhi/Article/program/Java/JSP/201311/19267
在ruby中如何调用c、c++或java的函数求答案
知道在java中调用c或c++函数,主要是通过本地化接口jni来实现的,在windows下,调用的是dll文件,在unix下,调用的是so文件。也有使用java-corba-c++通信模式的。
Ruby是一种什么样的语言,主要用来做什么,现在有一家公司让我从java转ruby,我很犹豫?
Ruby是一种功能强大ruby代码转Java的面向对象ruby代码转Java的脚本语言,她可以使您方便快捷地进行面向对象编程.有时使用像Smalltalk、Eiffel或C++这样正式ruby代码转Java的面向对象语言来开发一些小项目显得有点"小题大做",而Ruby刚好可以满足这些面向对象编程的需求.当然ruby代码转Java了,您也可以使用Ruby进行普通的面向过程编程. Ruby的文本处理能力极强,与Perl不分伯仲.同时,Ruby的语法简单,还有异常处理以及迭代器等构造,使编程变得简单明ruby代码转Java了. 简而言之,您可以像使用Perl一样方便快捷地进行面向对象的开发
Ruby和Java有什么关系么?
在Ruby中ruby代码转Java,一切皆是对象。
下面举一个例子来更直观地说明Ruby语言ruby代码转Java的这一特点。
在Java中,求一个数ruby代码转Java的绝对值的代码如下。 int c = Math.abs(-20); 而在Ruby语言中,一切皆是对象,也就是说“-20”这个数也是一个对象,因此,求一个数绝对值的Ruby代码形式如下。 c = -20.abs 这样的代码编写方式是不是更形象一些呢?
Rails 框架是一个更符合实际需要而且更高效的Web开发框架,Rails结合了PHP体系的优点(快速开发)和Java体系的优点(程序规整)。Rails是一个全栈式的MVC框架,换句话说,通过Rails可以实现MVC模式中的各个层次,并使它们无缝地协同运转起来。 在实际开发一个MVC模式的Web应用项目时,如果使用Java开发,需要用到Struts、Hibernate和Spring等框架,而且需要额外整合3个框架开发出的内容。而使用Ruby语言开发相同的项目时,只需要用到Rails框架就可以完成。
RoR的效率肯定要比Java高一个数量级,这确实是事实,比PHP至少也要高好几倍,这也是事实,这一点在这篇文章中不展开了,但是为什么开发效率这么高,我也想谈谈我的看法,当然还很不成熟的看法ruby代码转Java:一、主要原因是ruby语言的语法非常强大我记得庄表伟说过一个观点:“框架是强化的语法”,意思就是说语法比较弱,所以才需要n多框架,如果语法很强,框架就很少。这一点在Java和ruby身上得到了验证。
1、ruby的open class VS Java的AOP,反射、动态代理,字节码增强等技术JDK1.3开始引入反射,就已经打开了Java这种静态类型语言通往动态类型语法的潘多拉魔盒。随后的动态代理技术,字节码增强技术,静态和动态的AOP技术开始层出不穷,为什么呢?就是需要在程序运行期动态改变对象的行为。但是对于ruby来说是open class的,语法级别上就支持程序运行期修改对象行为,所以Java需要很复杂技术才能实现的功能对于ruby来说就是非常简单的搞定了。
2、ruby的duck typing VS Java的IoC,泛型Java的IoC不用说了,泛型在库级别也开始广泛使用。IoC就是根据对象行为来进行对象组装,泛型就是在不确定对象行为的情况下确定对象的交互。但是ruby的对象行为是在运行期才确定的,天然就是泛型的,行为不是静态的,所以不需要IoC。
3、ruby的block,closure VS Java的匿名内部类大家对spring的Template肯定印象很深刻,但是这是ruby标准的用法,所以各种资源释放,异常处理在语法级别上就支持的很好,做起来很简单。
4、ruby的Meta programming VS Java缺乏method_missing机制大家耳熟能详了,Java没有这么强的Meta programming,很多ruby magic耍不出来。
5、脚本语言 VS 编译语言这也是一个很大的优势,脚本编程速度确实快。
二、rails框架确实做的很棒
1、full-stackrails是一个概念一致的fullstack框架,不知道为什么,在Java世界目前只有Rife这一个可以和RoR相提并论的fullstack框架,但是Rife的实现并不好(作者从PHP转过来的,和DHH爆发过口水战)。不过因为底层语法支持的不同,用Java是做不出来RoR框架的。因此也有人用Groovy做Grails,不过这帮人不太争气。
2、CoC这个不用说了,现在很多Java框架开始吸收这一点。
3、为web开发良身打造web开发需要用到各种技术全部提供,绝对的贴心,如果用Java,这些东西都需要自己集成或者自己实现,省了一大堆麻烦事。
4、开发测试部署快速这个不说了,Java劣势太明显了关于“效率提高的来源”问题,我的理解就是次要复杂性被ROR降低到了极致。说的难听一点,不是ROR太聪明,而是我们以前做得蠢事太多了。
各种各样的xml, taglib,单元测试困难 ... ...做过项目的人都知道这些次要复杂性很多情况下真的是要命的。ROR没有降低软件的内在复杂性,也就是业务问题。但是它把复杂性降低到无限趋近于业务复杂性,也有人称ROR是Web开发的DSL。而解决业务问题正是人发挥聪明才智的地方,ROR不能代替人,但是它把人从次要复杂性的泥潭之中解救了出来。
参考资料:南京赛威信息科技
ruby on rails框架能运行java么
楼主的意思只是能调用java代码么?
如果是这个意思的话,我就可以告诉LZ可以。
有一个gem包叫'rjb'(ruby java bridge),楼主可以百度一下;
但是要装rjb必须系统先装好JDK,否则在安装rjb时会提示错误;
我的是在ubuntu使用的,JDK的安装方法楼主百度一下就知道了。
至于安装gem包,楼主就应该懂的了
关于ruby代码转Java和ruby code的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。