【AICon】 如何构建高效的 RAG 系统?RAG 技术在实际应用中遇到的挑战及应对策略?>>> 了解详情
写点什么

Javier Paniza: Java 开发效率也可以比 RoR 高

  • 2009-05-22
  • 本文字数:978 字

    阅读完需:约 3 分钟

在我们的技术社区里面,Ruby 和 Rails 从一开始就因为广为传颂的高开发效率而受到人们追捧,有文章为证,也有图片为证,更有图书为证,国内的社区对此反应强烈。这里不得不提的是 Bill Walton Curt Hibbs 一篇文章《 Rolling with Ruby on Rails Revisited 》,这篇文章里面提到“用 Rails 开发一个 web 应用的速度至少是用典型 Java 框架开发的十倍”。

Javier Paniza 并不这么认为,他第一次读到这篇文章时非常吃惊:“哇!十倍的速度!?”他决定开始学习使用 Rails 来开发,期望能够发现高效率和程序员感到幸福的原因所在。

很快,他发现 RoR 是个很经典的框架,但使用了并不时新的技术:

  • Ruby 是个动态类型语言,跟 Smalltalk 一样。当我更喜欢去静态类型语言。
  • 脚手架是比较被动的代码生成机制,就跟 IDE 向导或者 AppFuse 一样。而我更喜欢主动的代码生成,或者根本不需要代码生成最好。
  • 以关系型数据库为中心:代码生成器和 ActiveRecord 导致必须先考虑数据表,然后才是类。而我更期望一个纯粹的 OO,就像 Hibernate、 JPA ,甚至是 ODBMS
  • MVC:我想要的是比陈旧的 MVC 框架更新更好的框架。

为了证明他的观点,他开始用带 JPA 注解的 POJO,以及模型驱动框架 OpenXava 实现了 Ruby 文章中的一个应用,结果是用了更少的代码,更少的时间却获得一个更加强大的应用。在用户界面、负责 CRUD 的 controller、实体关系维护等方面,Java 方案均表现突出。

由此他总结道:

Java 开发的效率只是文化问题,而不是技术问题。这不是 Java 的错,错在 Java 开发者自身。Java 开发者太专注于设计非常漂亮的架构,滥用 GoF 的设计模 式,过分追求重用,实施三层结构并过度使用 web service。独独忽略了简单性。其实 Java 是一门非常优雅的语言,足以简化软件开发。

Javier Paniza 没有忘记他使用的是模型驱动框架 OpenXava:

RoR 和 OpenXava 的主要区别在于,RoR 是个 MVC 框架,开发者必须编写 model、view 和 controller,而 OX 是个模型驱动框架,开发者 只需要编写 model 即可。结果自然就是更少量的代码但更好的应用实现了。另外一个不同在于,RoR 使用了被动的代码生成,也就是说它会为开发者生成代 码,但之后如果开发想要扩展或提炼代码,就不得不编辑生成好的代码。OpenXava 没有使用代码生成,唯一的代码就是开发者自己写的代码。

所以选择了好的工具和模式,确定自己的目标,在 Java 的世界同样可以实现高效率。

2009-05-22 08:463861
用户头像

发布了 127 篇内容, 共 41.5 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

LLMs 记忆体全新升级:六大新功能全面出击,用户体验值拉满!

Zilliz

大模型时代 向量数据库 zillizcloud LLMs

这8种常见的防火墙,分别有哪些优缺点?

wljslmz

防火墙 三周年连更

Zebec生态发展进入加速期,拿好ZBC坐等价值兑现

EOSdreamer111

海泰方圆《数字政府密码应用与数据安全合规性建设指南》顺利通过评审

电子信息发烧客

2023-05-05:给定一个无向、连通的树 树中有 n 个标记为 0...n-1 的节点以及 n-1 条边 。 给定整数 n 和数组 edges , edges[i] = [ai, bi]表示树中的

福大大架构师每日一题

golang 算法 rust

木兰汇专访 | 网心科技联合创始人马婷:创业者的“长期主义”

网心科技

【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的限流器RateLimiter功能服务

洛神灬殇

分布式 限流器 三周年连更 动手实现 RateLimter

Zebec生态发展进入加速期,拿好ZBC坐等价值兑现

西柚子

【问题排查篇】一次业务问题对 ES 的 cardinality 原理探究 | 京东云技术团队

京东科技开发者

ES 京东云 企业号 5 月 PK 榜

云原生典型应用架构

穿过生命散发芬芳

云原生架构 三周年连更

《AGI时代的破局之道 | 社区征文》

后台技术汇

三周年征文

下载LORA模型

IT蜗壳-Tango

三周年连更

async/await详解

不叫猫先生

JavaScript async/await 三周年连更

Kafka性能测试初探

FunTester

PS 2020 photoshop绿色版

源字节1号

ChatGPT 何时替代码农?

酱紫的小白兔

码农 机器人 ChatGPT

Zebec生态发展进入加速期,拿好ZBC坐等价值兑现

股市老人

Markdown基础语法教程

小张想搞机

学习 markdown markdown语法 markdown编辑器 基础

手把手教会你 | 网络编程

TiAmo

socket通信 服务器编程 单用户模式

开源项目LuckyDraw分享&介绍

小张想搞机

小程序 开源 开发 GitHub、 项目上线

服务网格(Service Mesh)是什么?

乌龟哥哥

三周年连更

Shell脚本的变量

攻城狮Wayne

Shell命令 三周年连更 shell变量

C++多线程编程和同步机制:详解和实例演示

小万哥

c++ 程序员 后端 多线程 同步

Java实现坦克大战1.0

timerring

Java

Java多线程基础

timerring

Java

MySQL一次大量内存消耗的跟踪

GreatSQL

使用MASA全家桶从零开始搭建IoT平台(二)设备注册

MASA技术团队

IoT mqtt

Flink应用开发

阿泽🧸

flink 三周年连更

matlab实现通信原理

袁袁袁袁满

三周年连更

1分钟学会、3分钟上手、5分钟应用,快速上手责任链框架详解 | 京东云技术团队

京东科技开发者

Netty 京东云 企业号 5 月 PK 榜

使用 NutUI 搭建「自定义业务风格」的组件库 | 京东云技术团队

京东科技开发者

京东云 企业号 5 月 PK 榜

Javier Paniza: Java开发效率也可以比RoR高_Java_张凯峰_InfoQ精选文章