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

请教下单人 solo 开发 app 时的 Java 后端技术选择?

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

    不知道各位全栈老哥开发 app 时,后端接口用的什么语言什么框架?

    不考虑微服务什么的特性,只本着这几个目标去:

    • 减少开发工作量
    • 减少服务器资源占用
    • 少折腾

    目前看了一些框架,比如 SpringBoot 、Vertx 、Quarkus 、Javalin 、Jfinal 等,也简单调研了 GraphQL 、Apijson,除开 Java,对 Python 的 FastAPI 也做了尝试,始终没有找到完美答案。

    老哥们都是怎么搞的?

    84 条回复    2021-10-20 09:06:38 +08:00
    mht
        1
    mht  
       51 天前   ❤️ 22
    PHP
    dcalsky
        2
    dcalsky  
       51 天前
    Java/Kotlin 版本的 Vertx 、SpringBoot 、Quarkus 还有 Ktor 我都折腾过,最后选择了 Vertx,最符合独立开发的要求。

    (虽然最后还是全部重构转了 go
    MonikaCeng
        3
    MonikaCeng  
       51 天前
    如果只是增删改查,我一般用 thinkphp6
    如果有多线程等任务,我就 SpringBoot
    xgfan
        4
    xgfan  
       51 天前
    springboot,中庸之选,基本任何问题都能在搜索引擎第一页找到。
    janus77
        5
    janus77  
       51 天前
    如果是安卓 app 千万别用 php 很大概率会被打的
    springboot 一把梭其实挺好
    shuimugan
        6
    shuimugan  
       51 天前   ❤️ 2
    我必推荐 Node.js 的 directus,建好表之后 restapi 和 graphql 都有了,后台管理界面也有了,把它当底层用就行了,128MB 内存可以跑得很欢。
    qq1340691923
        7
    qq1340691923  
       51 天前
    flutter + gofiber
    james2013
        8
    james2013  
       51 天前   ❤️ 1
    Springboot 是一个很好的选择,缺点是资源占用相对较大
    不管是前期开发,还是后期扩展
    前几个月我试了下 Python 的 flask 作为 1 个项目的后台框架,开发起来速度慢,还挺恶心的.从数据库拿的实体还不能直接对外提供,而且像时间格式的需要手动转,用起来挺恶心的,不像 java1 个注解就自动转了.默认是放在 1 个文件里,也不好改
    blackboom
        9
    blackboom  
       51 天前
    @dcalsky 哈哈,蛮有意思的。
    我也把这些大大小小的都尝试了些,有浅尝辄止,有的跑在生产线上。
    后面应该是回归到 SpringBoot 了。
    chendy
        10
    chendy  
       51 天前
    springboot 一把梭
    写的时候大脑可以关机,无他,唯手熟尔
    没啥量的话 256 内存其实就能跑了
    peyppicp
        11
    peyppicp  
       51 天前
    就减少服务器资源占用这一条, 就用 go 吧,不缓存数据的话内存占用也就几十 M
    BBCCBB
        12
    BBCCBB  
       51 天前
    springboot, 如果引入的中间件不多, 其实内存也不多.
    anonydmer
        13
    anonydmer  
       51 天前
    我会选择 spring boot,因为不会永远我一个人做,后面我需要找其他的小伙伴来维护;不做一锤子买卖。

    已经这样工作过若干项目了。
    windyboy
        14
    windyboy  
       51 天前
    如果 java 的话 micronaut 比较好
    进一步的话,最好 kotlin micronaut

    但单纯讲后端的话,其实 go fiber 吧
    ch2
        15
    ch2  
       51 天前
    减少服务器资源占用
    这一条单人开发就不要考虑了,加机器就能解决的问题你还要精力去搞定,一个人哪有那么多时间?
    rust
        16
    rust  
       51 天前
    难得见到有人推荐 GoFiber 的,不容易啊
    wangkun025
        17
    wangkun025  
       51 天前
    要不要试试 rails ?
    虽然对资源占用比较厉害,但开发效率高啊。
    akyle
        18
    akyle  
       51 天前
    @dcalsky 转 Go 是出于什么考虑?自己比较熟悉吗?
    nicevar
        19
    nicevar  
       51 天前
    我做的个人 app 还是比较多了,期间用过 Java/Python/Go 的各种框架,最终选择了 php 的 PhalApi,我都没系统学过 php,拿来就用,最大的优点就是节省时间
    lerp
        20
    lerp  
       51 天前 via Android   ❤️ 1
    用 leancloud,服务器也省了
    janxin
        21
    janxin  
       51 天前
    个人开发的时候单体应用最好,不是 Spring 一把梭么
    lbp0200
        22
    lbp0200  
       51 天前
    1 、减少开发工作量——选择支持原编程的语言,例如 Ruby 、lisp,推荐 Ruby
    2 、减少服务器资源占用——支持编译成二进制的语言,例如 go 、C/C++、汇编,推荐 golang
    3 、少折腾——无法领会

    1 和 2,是一对矛盾体,如果是 Java 出身,忍受不了 golang 的语法,可以考虑 kotlin,然后 google 一下关键字“kotlin web framework”
    MakHoCheung
        23
    MakHoCheung  
       51 天前
    Java && 服务资源占用少,那必须 QUARKUS
    sciel
        24
    sciel  
       51 天前
    学 v 站~
    libook
        25
    libook  
       51 天前   ❤️ 3
    技术选型是根据需求来的,没有一种架构方案适用于所有需求。

    要想开发效率高,首选自己熟悉的技术栈,能接受学习成本的话再考虑自己不熟悉的技术栈。另外技术栈轮子多少也是要考虑的。

    要想资源占用少,看具体要少到哪种程度,能撑到当前的主流技术,都有一些解决方案可以在一定程度上满足资源占用方面的要求,但追求极致只能去考虑一些 C++、Rust 之类的方案。

    技术架构都是有保质期的,因为在设计的时候仅能对需求做有限时长的预测,所以可以用自己最了解、最简单的方案来做,反正以后肯定会重构。

    我做 Web 全栈比较多,后端一开始需求都比较简单,极简的用 Node.js 原生 API 几行写个服务;想预留些扩展性就加个 Koa 框架,路由多了再考虑引入路由中间件,数据库操作多了再考虑引入个 ORM 或 ODM 。
    liuhan907
        26
    liuhan907  
       51 天前
    单人开发我觉得你要是不排斥微软那就用 aspnetcore 一把梭,不喜欢微软那就 Go 一把梭。我觉得还是比 Java 舒服那么一点。
    semoon
        27
    semoon  
       51 天前
    50 万用户以下的话,jfinal 单机零优化很稳。。。
    janxin
        28
    janxin  
       51 天前
    另外 FastAPI 确实是很省心的,不如先说下各个方案遇到的问题再来看方案。毕竟对你来说选择自己熟悉的方案更合适。
    kennhuang
        29
    kennhuang  
       51 天前 via iPhone
    Strapi?
    windyboy
        30
    windyboy  
       51 天前
    哦,对
    其实后端一定要开发吗?
    现成的 headerless cms 不好吗?
    SorcererXW
        31
    SorcererXW  
       51 天前
    Flutter + Go + gRPC
    zoharSoul
        32
    zoharSoul  
       51 天前
    减少开发工作量
    减少服务器资源占用
    少折腾
    -----
    最适合这 3 个的是 PHP
    miao666
        33
    miao666  
       50 天前
    懂 java 肯定 springboot 吧,配置简单,开箱即用
    cgpiao
        34
    cgpiao  
       50 天前
    Java 只能是 spring 吧,kotlin 的话可以 ktor 。
    bnm965321
        35
    bnm965321  
       50 天前
    @shuimugan 看官网半天没看明白是啥
    gaojiangouyu
        36
    gaojiangouyu  
       50 天前
    ASP.NET Core ( Web ) + EF Core (数据库),在一些一般的场景下,这两者搭配的效率绝对完爆 java 生态了 golang 生态里面的绝大多数框架
    itning
        38
    itning  
       50 天前
    flutter+spring boot
    shanechiu
        39
    shanechiu  
       50 天前
    @janus77 Laravel 体验也是很好的
    shuimugan
        40
    shuimugan  
       50 天前
    @bnm965321 我一开始看介绍还以为是一个类似 phpMyAdmin 的工具,但搭起来之后才发现真香,是一个被低估的低代码框架。
    clf
        41
    clf  
       50 天前
    SpringBoot 基本啥都能做,啥都有解决方案。

    如果要前后端代码统一用 js/ts 的话,可以用 nodejs 后端,react/react-native 前端
    pengtdyd
        42
    pengtdyd  
       50 天前
    如果是我自己选的话:spring cloud
    如果是推荐的话:flask
    如果是跨平台技术的 app 的话:nodejs
    如果追求高并发的话:gin
    如果想节省成本的话:serverless
    James369
        43
    James369  
       50 天前
    @lbp0200 什么是原编程的语言
    JasperYanky
        44
    JasperYanky  
       50 天前
    django
    fishDD
        45
    fishDD  
       50 天前
    想要快,且稳定就 SpringBoot 吧,成熟的解决方案多(借用楼上,基本搜索引擎第一页都能找到答案)。缺点资源占用高,这玩意是 java 的通病啊。
    binhb
        46
    binhb  
       50 天前 via iPhone
    typescript 前后端一把梭
    ReferenceE
        47
    ReferenceE  
       50 天前 via Android
    无脑 cython 吧...自己写的话一般工作量不会很大
    TypeError
        48
    TypeError  
       50 天前
    个人前台接口、页面渲染都包的话,django
    单纯 http 接口:gin
    pigspy
        49
    pigspy  
       50 天前
    vertx+kotlin+gradle
    开发体验和开发 app 差不多
    liuxu
        50
    liuxu  
       50 天前
    @janus77 被打和语言没关系吧
    boja
        51
    boja  
       50 天前
    前后端都 js/ts,是适应性最强、共享代码最直接的方式。
    beginor
        52
    beginor  
       50 天前 via Android
    没啥特殊需求的话后端可以用 nodejs,复杂一些的话可以考虑 .net core webapi, 就算是 py 也比 java 强
    ElmerZhang
        53
    ElmerZhang  
       50 天前
    PHP/Node.JS/Go 都能满足你的需求
    horseInBlack
        54
    horseInBlack  
       50 天前
    我不算全栈哈,主要是做前端的,之前做过 PHP,之后 Node.JS 也有练手的项目

    感觉上个人的话还是 serverless 比较合适一点,阿里云、腾讯云,包括 uniCloud 也有阿里云和腾讯云的版本
    有云数据库、云存储和云函数,基本上你网站的增删改查都足够了

    语法上是 JavaScript 的语法,用起来和 Node.JS 差不多,云数据库的查询语句语法也跟 MongoDB 差不多,都是相同的

    使用下来非常方便
    bybyte
        55
    bybyte  
       50 天前
    云开发,开发效率快地一 P
    zxCoder
        56
    zxCoder  
       50 天前
    .net6
    hdfg159
        57
    hdfg159  
       50 天前 via Android
    如果熟悉 spring boot 肯定选 spring boot 啥都有,拿来就开发一把梭,就是占用资源多,轻量级推荐 vertx,复杂起来肯定不如 spring 顺手
    mywaiting
        58
    mywaiting  
       50 天前
    如果不单纯选择 Java,可以投奔 Python 用 Django,开发速度快,坑少,稳定,性能也过得去
    dayeye2006199
        59
    dayeye2006199  
       50 天前
    firebase 把,没有比这更快的了。。都不用写后端,只用管前端就行了。
    kinge
        60
    kinge  
       50 天前
    单人 solo 时最好的就是 php laravel 或者 ruby ror ,开发效率比 java 非常高,后端前端一把梭,两年独立开发建议
    js8510
        61
    js8510  
       50 天前
    Python + flask/django. FastAPI 的问题是是暂时 community 不太成熟。比较有经验,有信心去 stackoverflow 自问自答的朋友可以尝试 fastAPI
    huxiweng
        62
    huxiweng  
       50 天前
    ACTFramework
    ArJun
        63
    ArJun  
       50 天前
    如果为了省资源推荐 GO,开发效率也很快,1h1g 就能跑的很舒畅了
    ixx
        64
    ixx  
       50 天前
    第三条『少折腾』那就得看你哪个用的熟了 一般来说用的越熟的越好
    konakona
        65
    konakona  
       50 天前
    如果一定要在 java 里选的话,推荐 springboot 框架,很容易上手。

    如果要选一个新的语言来扩展思维的话,我会推荐 go+go gin (开发框架)。

    如果你非要很快的话,之前有个 js 基础,上 nodejs,或转投 php 怀抱用 laravel 或者 thinkphp 。
    encro
        66
    encro  
       50 天前
    @shuimugan

    9.0 居然用 typescript 开发了,原来是用 PHP+Symfony 的。
    chenzheyu
        67
    chenzheyu  
       50 天前
    单人开发最效率的应该是 laravel
    ychost
        68
    ychost  
       50 天前
    建议用 node.js ,配合 serverless,然后负载均衡啥的都不用考虑了
    pelloz
        69
    pelloz  
       50 天前
    选你最熟悉的语言和框架就好,减少工作量和犯错的可能。个人 solo 开发的 app 一般很少会遇到性能瓶颈,大多数是对语言或框架理解不到位导致的 BUG 。
    macha
        70
    macha  
       50 天前
    nodejs 单机裸奔差不多了。连 NGINX 都不用装。
    Kamiyu0087
        71
    Kamiyu0087  
       50 天前
    我个人觉得 ktor 还蛮好用的
    不过 Java 上 SpringBoot 肯定没错的
    KamilZhang
        72
    KamilZhang  
       50 天前 via Android
    @mht 满离😂😂😂
    zzzmh
        73
    zzzmh  
       50 天前
    SpringBoot 不费劲
    至于内存,首先不要的依赖就去去掉
    然后用 docker 的 tomcat(限制最大内存和使用 swap) jdk8 openj9 tomcat8.5 打开 nio2 就美滋滋
    superchijinpeng
        74
    superchijinpeng  
       49 天前
    Spring Boot
    solos
        75
    solos  
       49 天前
    一个人选 go 啊 选什么 java 、php
    janda
        76
    janda  
       49 天前
    我是做 java 开发的、但是我推荐 GO
    wizzer
        77
    wizzer  
       49 天前
    unco020511
        78
    unco020511  
       49 天前
    如果语言限定 java,应该 springboot 是成本最小的,资源丰富,生态良好
    xuanbg
        79
    xuanbg  
       49 天前
    楼主要求除开 Java,而我用的就是 Java 。这……好吧,说正经的,用你最熟悉最成熟的技术栈才是正经。软件开发没有捷径,到头来你会发现最笨的办法才是最快的。

    因为我有成熟的、完善的基础组件 /基础服务,所以我开发任何功能都只需要写几行前端和后端的业务代码就行。就这几行业务代码吧,我还都是从写过的项目里面复制过来稍微改吧改吧的,最大的工作量是把 UI 给调漂亮点。至于用什么语言,你觉得这会是一个问题吗?
    furlxy
        80
    furlxy  
       49 天前
    php 或 nodejs 不更好吗
    darkengine
        81
    darkengine  
       49 天前
    @xuanbg 你理解错了,他首选就是 Java 。
    AcFei
        82
    AcFei  
       49 天前
    ASP.NET Core,

    想来 Java 选手上手 C#应该也不难
    ajaxfunction
        83
    ajaxfunction  
       49 天前
    喜欢 java 那就是 jfinal,毕竟以极速开发著称。
    喜欢 php 就是 thinkPHP,外包公司的半边天
    zachlhb
        84
    zachlhb  
       49 天前 via iPhone
    后端熟悉啥就用啥啊,有什么区别的
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3791 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 07:04 · PVG 15:04 · LAX 23:04 · JFK 02:04
    ♥ Do have faith in what you're doing.