V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
javak
V2EX  ›  Java

Java 出活真的快吗

  •  3
     
  •   javak · 334 天前 · 15348 次点击
    这是一个创建于 334 天前的主题,其中的信息可能已经有所发展或是发生改变。

    经常看到有人说,做自己的项目用 php 、python 、ruby 等等或者其他的什么框架,出活贼快。想具体讨论下。

    正好最近我接了一个私活,是做一个 app 的后端+一个简单的后台管理系统的后端,因为 app 和前端对方已经找到相应的人了。

    有个有个朋友找到我,我就选了 Java ,因为我只会用 springboot ,选别的还得重头学。

    是从 0 开始搭建一个后端服务,对方给到我的内容:

    • 设计稿和需求文档
    • 服务器的 ip 和基本权限,服务器上什么软件都没有,需要我自己去安装。

    功能点包括:

    • 用户注册登录:微信+手机,个人信息维护
    • 选课+学习(类似得到那种买课然后上课)
    • 一个极简版的商城(展示的内容,都是人工在管理平台配置)
    • 学习过程中的积分体系(类似 V2EX 的铜板)
    • 一些场景展示的广告配置。

    我只做了一个服务,把 app 端的功能和管理平台的功能都放到这同一个服务里面。 我做的事情包括:

    • 部署 nginx (因为前端也要用到,我就顺便一起弄了) + java server(就是下载一个 jdk + maven), 然后通过 java -jar 运行起来。
    • 设计所有的数据表
    • 从 0 开始,搭建服务框架(包括可以跟踪的 log 系统,就是每个 log 都带上 traceid ),然后 CURD 。

    我做的过程中,都用了计时统计,全部弄好上线,一共花了 20 小时。(这是纯纯的动手时间,和上班那种一天 8 小时,5 小时在划水的,8 小时工作不是同一个意思。)


    如果上面这些事,用 php 、python 、ruby 熟手,需要花多久时间呢?

    145 条回复    2023-07-19 16:42:44 +08:00
    1  2  
    xiaochong2020
        101
    xiaochong2020  
       334 天前
    毕竟 php 是最好的语言
    veightz
        102
    veightz  
       334 天前 via iPhone
    @javak aes256 用在什么地方呀? 加密密码?
    jklove123bai
        103
    jklove123bai  
       333 天前
    现在前后端都有低代码平台,讨论这个有啥意义吗
    javak
        104
    javak  
    OP
       333 天前 via iPhone
    @veightz 加密身份 token
    coetzee
        105
    coetzee  
       333 天前
    按照你这个需求,Java 、PHP 、Ruby 、Python 出活都很快,至于哪个更快,按照熟练度来,特别是框架化之后的熟练度。至于 Golang/Node 真不如那四个更快,别尬吹了
    coetzee
        106
    coetzee  
       333 天前   ❤️ 3
    每次看到这种拼开发效率的都会出来 go 粉来吹,我虽然也写 go ,但是你别吹开发效率了,你的对手是其他几个业务主流语言的时候,go 在开发效率上,跟 Java 差的不是一点半点,看看这个裸露的生态和语言表达力,你凭什么跟 Java 比?当你还在拼各种 utils 的时候,Java 早就写完了,多学学现代 Java ,了解下什么叫做表达力,如果不懂,可以看看 C#和 scala ,表达力越高的语言,当你熟悉了之后,开发效率提升不是一点半点

    GO 的优势永远不在开发效率上,至少跟 Java 对比的时候,尬吹 golang 的时候,注意姿势,特别是业务开发,千万别吹 golang 的开发效率
    coetzee
        107
    coetzee  
       333 天前   ❤️ 1
    @someday3 对,从单一功能来看。Java 不是很能打,甚至的确打不过 go ,这也是 go 粉为啥吹的原因,但是从工程整体开发来看,一个人做一个工程的时候,Java 比 go 快的不是一点半点,比 flask 这类也更快,可能 springboot 可以对线 django 一波,问题就在于,多数开发者,只是在公司承担模块功能开发的人,不担任整体性开发职责,所以没有一个完整的概念,其实如果简单功能论拼凑的话,node 和 python 都很好,但是论 web 项目整体工程化开发的话,Java 和 C#是一档,PHP/Python/Ruby 是一档,golang 一档,就这样子。
    你要是能够自己控制一套工程化最佳实践的人,另说,不然的话,老实选 Java ,开发效率和执行效率都不会错
    coetzee
        108
    coetzee  
       333 天前
    @lyxeno 很快了,很多在下面评论的吹逼,再*5 都未必能做完。所以我说 springboot 熟悉之后,开发效率很快,而且比较无脑,犯错的概率也很低,组件也很成熟,如果自己上一套 Golang web 来做这套业务,最少 50 小时
    yogogo
        109
    yogogo  
       333 天前 via Android
    我有一套跟你需求一样的
    milukun
        110
    milukun  
       333 天前
    推荐自己部署 AppWrite (开源),自带数据、用户认证、云函数、存储、日志等能力,主要的是有多端 SDK (客户端、服务器端都有),云函数也支持 java ,你一些逻辑可以部署在里面。
    比如用户一注册,触发 xxx 函数,用户上传某某文件,触发 xxx 函数。
    挺好用的 /
    milukun
        111
    milukun  
       333 天前
    @milukun 之前我倾向于 flask 或者 Django 快速搭建一个服务,现在基本就是在 AppWrite 里面建项目就可以了,多个项目共存
    angryfish
        112
    angryfish  
       333 天前
    积累一套自己的业务框架,新需求来啦直接就是 Controller ,service ,dao 的写业务。在这基础上用常见的高级语言,效率都是差不多的。
    zachwei
        113
    zachwei  
       333 天前
    大佬 上哪找的私活
    redvoilin
        114
    redvoilin  
       333 天前
    ruby on rails 熟手的话最多几个小时吧
    TyCoding
        115
    TyCoding  
       333 天前
    是不是太多人停留在几年前的 JavaWeb 阶段了?现在的 Springboot 太快了,哪还用得着配置?基本引入依赖就能用,哪个语言有 Spring 这么完整的生态?
    roundgis
        116
    roundgis  
       333 天前
    現在都精確到小時了
    xiangyuecn
        117
    xiangyuecn  
       333 天前
    SpringBoot 最野蛮情况下,只需打包出一个 jar ,有 jdk 就能跑,内置 tomcat 自己玩(包括静态路径处理,https )

    nginx 、依赖安装 这些玩意都全可以省了,一个 jar 搞定,,😂
    xiangyuecn
        118
    xiangyuecn  
       333 天前
    @zjsxwc #29 估计是很多代码单独放到了一个文件里面的缘故吧,一个文件的几行代码,看一段逻辑点开几十个文件😂

    欢迎围观我的一个 java 开源库:高性能的坐标数据、边界数据查询工具,Java 开源程序、带 http 查询接口,内存占用低( 1 秒可查 1 万个以上坐标对应的城市信息)
    https://github.com/xiangyuecn/AreaCity-Query-Geometry

    源码直接丢在根目录裸奔,里面有个命令行文件 直接编译运行,代码全丢在一个 java 文件里面 打开阅读无文件切换压力

    估计没几个人会和我一样这样写 java 程序了😅
    dogfeet
        119
    dogfeet  
       333 天前
    Kotlin + Spring Boot

    前面有人说 PHP 一个接口光写十分钟吧

    自己平时做的 CRUD 接口,一个系列增删改查一般总共十分钟不到吧。
    Flyway 定义数据库表结构
    定义参数结构,通过注解做参数校验(一堆 PHP 不做这个事,有但是不多)
    定义个
    写 Controler ,写 Service ,MyBatis Plus 一把梭。
    对了,带上 Spring Doc 注解,完事后,直接生成文档页面,还可以文档页面直接测试接口。

    中间会有些手误啥的错误,强大的类型,包括 MP 都是泛型关联数据库字段,大部分错误编译期就能看的非常清楚。
    参考老代码也是一目了然,类型是最权威的注释,也是最权威的代码脉络总纲。

    带上测试,15-30 分钟差不多全部搞完吧。

    PHP 搞数据库,绝大部分字符串拼接一把梭,搞出问题来了在哪里 Debug 个半天,看着让人想笑,一堆说自己快的人搞出有注入风险的代码。

    有些搞法所谓的快,是不是真的比人快先不说,出来的东西,我是懒得维护的,后期找起来就是天书。

    对了,后面部分接口想做改造,加个缓存,加个读写分离啥的,你们猜要多久,要改动多少?

    Kotlin 语法既强大,又简洁,还简单。建议去试试。
    wizzer
        120
    wizzer  
       333 天前
    出活快不快在于你有没有一套基础功能的框架,一些常用功能不用再浪费时间开放
    比如
    https://demo.budwk.com
    自带了权限体系、一堆 starter 组件、API 文档生成等等;
    简单的小系统分分钟搞定。
    trlove
        121
    trlove  
       333 天前   ❤️ 1
    很多人说快都是从不考虑安全问题 ,数据问题,以及设计问题,后期维护程度问题,就在那说 PHP 比 java 快……如果啥也不管直接数据库查出来 直接返回给前端,那么 java 也同样可以非常快,直接 map 一把梭不就完事了。java 现在阶段写起来还慢的主要原因就是架构设计和代码规范问题带来的。如果用 PHP 做同样的规范和设计,它也快不起来
    runtousa
        122
    runtousa  
       333 天前 via iPhone
    想问一下 op ,售后的话如果出了紧急 bug ,但是你又没时间处理,这样怎么办呢
    IdJoel
        123
    IdJoel  
       333 天前
    学学 PHP 吧。。。。 时间差的不是一点半点啊
    IdJoel
        124
    IdJoel  
       333 天前
    @trlove 你看看 laravel 的 orm 吧,你就知道差距多大了
    IdJoel
        125
    IdJoel  
       333 天前
    @trlove 看看 laravel 的 validate ,artisan make ,orm ,你就知道差多少了。。
    miv
        126
    miv  
       333 天前 via Android
    PhP 表示在座的语言都是垃圾。🤪
    javak
        127
    javak  
    OP
       333 天前
    @runtousa 这两个不会同时发生
    runtousa
        128
    runtousa  
       333 天前 via iPhone
    @javak 万一呢,比方说你白天坐班,突然来 bug 了,你没空处理
    someonedeng
        129
    someonedeng  
       333 天前
    项目规模越大,编程语言本身的影响越小

    小项目 Java 中规中矩吧,python 、php 一把梭快点
    trlove
        130
    trlove  
       333 天前
    @IdJoel 你如果用 laravel 的 orm 框架啥的 来说明 PHP 快 那 java 同样也有很优秀的 orm 库…… mybatis plus jpa 等等 。mybatis plus 可以一键生成数据库单表对应的所有东西,jpa 如果业务简单,单表操作 使用起来更无敌。但这种算起来是生态圈子好用 而不是语言本身很犀利……单从语言本身出发,java 也可以写的很犀利很快,也可以各种炫技各种设计模式往上堆让它变复杂。而你说的那些都是属于生态圈子,java 的库只会比 PHP 多,生态圈子只会更好,这也是企业更愿意用 java 的原因。PHP java 我都会,你说的我也都用过。但吧数据从数据库查出来仅仅只是"简单完成任务而已",如果只是为了 crud ,只是为了吧数据库展示给前端,任何语言都能写的很快。如果在完成展示数据的基础上 要考虑后期维护 考虑异常封装,考虑统一数据结构返回 考虑权限 考虑数据安全 考虑并发 考虑 xss 考虑后期拓展 考虑后期是否需要分库分表 是否需要微服务 是否……等等一大堆。那你就会需要引入一大堆库和一大堆中间件,那项目做起来必然麻烦和慢,就是 PHP 它也得慢下来。现在 Java 岗位做起来觉得慢是因为很多公司不咋样,但是总觉得未来会上市 未来大赚特赚,用户多到数不清,所以在写项目的时候都是各种微服务架构 各种拓展,各种灵活。这种开发起来慢是由于架构原因带来的 并不是 java 本身的问题。
    xinshoushanglu
        131
    xinshoushanglu  
       333 天前
    php 接外包开发效率无敌,几天就出活儿,商城类模版项目也贼多
    cquan
        132
    cquan  
       333 天前
    Java 快是因为开源项目多,php 上手才快
    yueye115
        133
    yueye115  
       333 天前
    Ruby 最快
    lingalonely
        134
    lingalonely  
       333 天前
    开发小工具,Java 是弱鸡的,一旦是复杂一点的工程 Java 这套就有优势了
    jack4536251
        135
    jack4536251  
       333 天前 via Android
    @jklove123bai 推荐个好用的低代码平台
    jack4536251
        136
    jack4536251  
       333 天前 via Android
    @lingalonely 小公鸡用啥好?
    512357301
        137
    512357301  
       333 天前 via Android
    先想办法精简下 Java 团队吧,人数太多了,3 个起步上不封顶,创业团队吃不消的。
    你这 20 小时的活儿,而且全是中等强度(不考虑难度),实际在公司里开发,排期估计得*3 ,一周。。。,这才是真实速度
    IdJoel
        138
    IdJoel  
       332 天前
    @trlove 你自己看看 mybatis plus 生成个模型需要多少配置。。。 多少代码。。。
    考虑异常封装,laravel 自带
    考虑统一数据结构返回,laravel 中间件 5 分钟搞定
    考虑权限,laravel policy
    考虑数据安全,laravel model 的 hidden ,
    考虑并发,这个不说了


    说实话这些东西,我写个小项目都考虑,但是基本搭框架的时候半个小时全弄完了
    trlove
        139
    trlove  
       332 天前   ❤️ 1
    @IdJoel 首先呢 异常封装你说自带 这就是个问题 当你引入不同的库 就会出现不同的错误异常,这是代码层面的,还有业务层面的异常,laravel 自带的就不够用了吧?另外 我不是说 PHP 做不到那些东西,我也知道 laravel 都有。我最早接触的框架还是 CI ,那时候它的设计模式就很像 java 靠拢了。你所描述的那些都是单体项目,所以会很快。java 现在 springboot 的一套东西也能完成,单体应用也能做的很快。但为什么很多公司做的慢呢 我一直提到一点是架构的问题,就是不管多小的公司 写一个项目上来就是分布式,微服务,分库分表,所以导致写起来很慢。根本原因就在于简单事情架构复杂化了。而 php 大家用它不管是工作还是接私活都是写单体项目,所以特别快就成了共识。提到 java 大家就想到复杂的架构……其实 java 也能做单体应用,也能很快的……而且我自始至终也说 php 很快,只是我的观点是 java 也可以很快……
    zzzmh
        140
    zzzmh  
       332 天前
    得看项目多大,越大 java 比 php 的优势就越大,反之小项目打不过,就算只比写接口估计也难
    nexo
        141
    nexo  
       330 天前
    @AreYou0k 提倡 规范一下 后端 api 不然前端会难受死
    rophie123
        142
    rophie123  
       324 天前
    我主要写 php 的,优先使用 php 的原因是手里很多 php 项目,很多代码可以复制粘贴,出活飞起。偶尔也用 go ,java 会写安卓,最近在看 springboot 和 kotlin ,感觉也还行吧,常用的 java 库,php 也有,只写 api 的话想快也都可以快,想慢(细活)那 java 可发挥空间就大得多。出活快慢还是要看代码积累和生态,php 很单纯直接
    RainCats
        143
    RainCats  
       323 天前
    @javak 有没有可能是你工具不到位,设计好表,然后 MybatisPlus 有代码生成器,一键生成所有表的 CRUD 接口,剩下的就是根据实际需要调整一下就好了
    FuryMe
        144
    FuryMe  
       320 天前
    熟手的话,Python 最快
    mlbjay
        145
    mlbjay  
       290 天前
    @512357301 我看了下,公司项目的话,应该也要 2 周最少了。
    如果功能完善的话,十几个接口,还有和 微信 s2s 的这些东西。
    如果有现成模板,那不是从 0 开始的,不是一个概念。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   867 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 19:30 · PVG 03:30 · LAX 12:30 · JFK 15:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.