• 请不要在回答技术问题时复制粘贴 AI 生成的内容
HeyHudy
V2EX  ›  程序员

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

  •  1
     
  •   HeyHudy · Oct 18, 2021 · 11338 views
    This topic created in 1845 days ago, the information mentioned may be changed or developed.

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

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

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

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

    老哥们都是怎么搞的?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    想来 Java 选手上手 C#应该也不难
    ajaxfunction
    ajaxfunction
    Oct 19, 2021
    83
    喜欢 java 那就是 jfinal,毕竟以极速开发著称。
    喜欢 php 就是 thinkPHP,外包公司的半边天
    zachlhb
    zachlhb
    Oct 20, 2021 via iPhone
    84
    后端熟悉啥就用啥啊,有什么区别的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4436 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 247ms · UTC 09:30 · PVG 17:30 · LAX 01:30 · JFK 04:30
    ♥ Do have faith in what you're doing.