对于正在进行大规模更改的程序,是否值得从java/spring/hibernate更改为rails?

ege*_*ari 10 ruby java spring ruby-on-rails

我有一个项目,其核心领域正在发生巨大变化.可以使用该站点50%的核心功能,只添加50%的新功能,但我开始考虑在Rails中简单地重做产品可能会更快.发展速度非常重要.

有一些我非常喜欢java的东西 - 性能和可伸缩性非常好.我不是一个糟糕的Java开发人员,所以我的应用程序往往运行得很好 - 比我见过的Rails站点更好.我总是接受这样一种观点,即人们可能只是在使用Rails时花费更多的钱来解决问题,这可能最终会因为疯狂的生产力优势而自行解决.

我实际上非常熟悉Java.我知道在系统中添加一个基本实体仍然需要更长的时间,但我很快就会这么做,我不介意那么多.至少它很简单直接.

我的主意是:

  • 必须启动/停止服务器只是为了修复路由,延迟加载异常,控制器将出错视图等.
  • 事实上,单元/集成测试有时会产生与生产环境不同的结果(因为无法测试控制器上的注释,或者在异步服务调用期间发生延迟加载异常,或类似的事情).知道你的杰克逊是否正确地整理你的数据是另一个只有Tomcat的东西,因为它是由Spring处理的.在你测试了所有可能的东西之后,有很多东西出了问题,这坦率地惹恼了我的废话.
  • 忍受偶尔的maven/classloader问题,直到你部署到tomcat之前,这个问题不会让人头疼.当你在IDE中时,它会给人一种错觉,认为一切都是"好的".
  • 不得不花费更多精力来进行数据库迁移,而不是红宝石人.
  • 忍受Spring中的框架错误(自2009年以来该项目发生了大约5次)或Hibernate.我也不喜欢升级Spring Security并让他们不断地一次又一次地更改配置,apis和标记库.这很烦人.
  • 浪费了这么多时间将58 MB war文件上传到服务器!每当我需要部署更改时,这些都需要12分钟上传.如果我在上传之前忘了做'mvn clean',那么Spring可能会抱怨2个bean存在同名,因为我将一个bean移到一个新的包...然后我必须重新上传整个愚蠢的war文件.默认情况下,为什么"mvn package"执行时,默认情况下不会"干净"运行?!?!有时,这些框架和工具使用最愚蠢的默认设置.这在Java世界中非常普遍.
  • 不得不花费一个小时来确定框架想要插入自己的自定义实现的位置.这非常烦人.你可以花2个小时筛选谷歌和蹩脚的文档,试图找出如何覆盖Spring Security的身份验证机制......然后花费5分钟编写实际的实现.当然,他们在段落上写了段落来解释架构以及它是多么棒,但没有人关心.对于一些如此常见的东西,为什么不只是给出示例源代码并完成它?
  • 每当您想要运行集成测试时,Spring等待10-15秒即可启动.这是拖累.

我喜欢Java的一些东西.使用Spring Security可以很容易地进行基于角色的访问.身份验证从来没有那么大的收获,但我喜欢Spring内部的实现.

我也喜欢Spring的表单支持对象和@ModelAttribute.对于控制器而言,这些都是巨大的胜利,我不知道Rails是否可以做这些事情.老实说,我从不喜欢在每个动作中传递请求参数 - 当涉及到这种常见的膨胀时,Spring MVC实际上更容易使用.

能够在内存中缓存真正庞大的结构并在启动应用程序时让它们保留在内存中也是非常需要的,特别是对于这个应用程序实际上.我有一个内存中的同义词库和语法检查器,每个请求需要被调用数百次,所以内存对我来说几乎是最快的选择.

即便如此,我想我可以在2-3周内重建我所拥有的东西,然后使用rails在几周内添加所有新功能.

从好的方面来说,所有精心设计的css,html和javascript都可以移植到很少的问题.

在继续之前,我会对这个问题提出一些建议.

PS:我也可以去Spring-ROO ......但这也是一个相当大的返工.我从来没有使用JPA - 我直接使用Hibernate.我也没有使用JSP - 我正在使用Freemarker.

oma*_*oma 10

需要更多时间来熟悉Ruby和Rails.我自己作为Spring和Hibernate专家担任独立承包商,但我感到被java和它的Web框架所扼杀,所以我决定学习Ruby on Rails.

我会建议你学习Ruby,从我读到的你可能会掌握它,尽管使用ORM的方式非常不同.我遇到了它的问题,习惯于在Hibernate中将聚合根工作到ActiveRecord一类的一种表模式.但是,嘿,你可以轻松地试用MongoDB来获得一些真正的乐趣.

Ruby是

  • 更少的代码
  • 它具有快速和可扩展性(在特定任务上比java慢,但是你可以摆脱堆栈.)
  • 问题更多; 我应该使用哪种宝石.Luxorious!
  • 一个独特,大,共享和关怀的开源社区
  • 好的框架,如Rails和Sinatra
  • 强大.
  • 乐趣!

我会建议你做你在Ruby中描述的项目.

没有.

如果发展速度很重要的话.你会慢一些,相信我.有很多需要学习的东西,它的常规对于java程序员来说并不熟悉,当你遇到困难时,很多时候都会飞过.

最好的选择是聘请一位资深的红宝石开发人员与你配对并教你.做个好学徒,你会快速学习.比我快,我必须自己学习,这实在是效率低下.

祝好运!


lob*_*234 5

查看Playframework.开发的乐趣,您可以使用您的Java经验比任何其他基于Java的框架更快地开发功能(给定比您有2周).

您不必启动/停止服务器.您在Eclipse中修复代码并在浏览器上点击刷新.在生产中必须实际部署之前,不要处理WAR文件.从Eclipse中做所有事情.如果您在开发代码时想要的话,可以轻松执行TDD过程.从架构的角度来看,它是一个完全无状态的RESTful框架.完全符合JPA(即使是像Mongo这样的NoSQL),因此您不必编写复杂的JDBC代码.在前端,它有一个全功能的模板引擎,使用Groovy作为模板语言.

我可以继续,但我建议通过网站看一看.