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

早期创业团队的 web 技术栈选择 Java vs Elixir

  •  3
     
  •   gilgameshcc · 2020-05-24 15:16:30 +08:00 · 12246 次点击
    这是一个创建于 1651 天前的主题,其中的信息可能已经有所发展或是发生改变。

    基础介绍

    至最开始在 v 站提出那个学术开源社区的创意已经快半年了,中间虽然经历了疫情有一些影响。但是多数事务的推进都问题不大,我们已经确定了未来的版本线,当前版本的设计(产品形态类似于 github ),以及百分之九十的前端开发( vue nuxt )加上后端主要 git 模块的开发( go 实际上主要魔改自 gitea ),同时运营侧,融资侧等也都有适当的进展。

    主要问题

    现在遇到了一个有点纠结的问题,就是 web 层(主要是 api 那部分)用什么技术栈来做(目前后端团队人数较少只有四人,且且远程工作)。候选有 Java 和 Elixir:

    • Java 的好处主要在于足够成熟足够全面,同时受众广泛,毕竟是目前国内用的最多的语言。缺点在于可能有些过于繁琐,开发效率低。
    • Elixir 好处在于确实非常合适应用场景,性能好,同时由于宏的关系开发效率也很不错。缺点是过于小众,导致我们非常担心之后团队扩张会遇到压力,以及学习成本比较高,和通常的 OO 语言差别不小,有点概率学会的意思。

    不知道大家怎么考虑这个问题,求建议建议~~~
    (顺便我们收 web 后端方向 java 和 elixir 的简历,如果有可能考虑很小的创业公司的话,需要熟悉 git 及 github 同时对学术信息开源及开源社区感兴趣。可以发简历给我们 邮箱: [email protected]

    展望

    我们的初版应该不久就能上线了,希望对学术开源感兴趣的话能够持续关注我们,未来我们会寻求更多的小伙伴,包括开发,产品,运营,等方向。

    116 条回复    2020-07-13 14:08:41 +08:00
    1  2  
    roundgis
        1
    roundgis  
       2020-05-24 15:22:44 +08:00 via Android
    use java
    dodo2012
        2
    dodo2012  
       2020-05-24 15:26:05 +08:00
    elixir 虽然不错,但国内,真的,除非你自己就是做这个,否则到时接手的人都找不到,所以,还是 java 吧,
    cmdOptionKana
        3
    cmdOptionKana  
       2020-05-24 15:33:42 +08:00
    java 虽然语言本身比较繁琐,但配合现代化工具,这个缺点已经被克服得七七八八了,不算一个明显缺点,再加上库多,不能说它开发效率低。
    fihserman123
        4
    fihserman123  
       2020-05-24 15:38:03 +08:00
    Java 的运行效率问题横向拓展就能解决七七八八 开发效率哪里低了。。。
    chinvo
        5
    chinvo  
       2020-05-24 15:41:37 +08:00 via iPhone   ❤️ 1
    当然是 C#
    jimrok
        6
    jimrok  
       2020-05-24 15:42:38 +08:00
    java 开发效率并不低
    Wincer
        7
    Wincer  
       2020-05-24 15:43:46 +08:00 via Android
    学过一段时间的 elixir,当时在某招聘网站搜了一下 elixir 的岗位,发现一个都没😅。祝福楼主找到合适的人
    MoYi123
        8
    MoYi123  
       2020-05-24 15:46:20 +08:00
    我们公司由于实在招不到 erlang 开发,已经准备转 go 了,Elixir 估计更难招吧。
    huachuang20
        9
    huachuang20  
       2020-05-24 15:49:01 +08:00 via Android
    Elixir,为了纯粹的 Happy !
    hyyou2010
        10
    hyyou2010  
       2020-05-24 15:56:02 +08:00
    spring 那一套的话,是不是 kotlin 也可以上了?这样效率是否就提高了?
    entertainyou
        11
    entertainyou  
       2020-05-24 16:05:19 +08:00 via Android
    支持下 elixir
    xuanbg
        12
    xuanbg  
       2020-05-24 16:19:57 +08:00
    elixir 不是灵丹妙药吗,哪里是 Java 这种粗胚驽货可以相提并论的
    realkenshinji
        13
    realkenshinji  
       2020-05-24 16:24:59 +08:00 via iPhone
    @hyyou2010 是的,我们组里就用 kotlin 搞 springboot 的应用开发
    putaozhenhaochi
        14
    putaozhenhaochi  
       2020-05-24 16:26:29 +08:00 via Android
    web 当然是 PHP 啦。
    forrestshuang
        15
    forrestshuang  
       2020-05-24 16:41:13 +08:00
    我的 ruby 比 elixir 都好,python 我觉得最好不过
    gejun123456
        16
    gejun123456  
       2020-05-24 16:57:50 +08:00 via iPhone
    java 用 Intellj 开发效率很高的,代码提示 代码自动生成啥的不一定比动态语言开发效率低
    abcbuzhiming
        17
    abcbuzhiming  
       2020-05-24 17:06:12 +08:00   ❤️ 6
    Java 开发效率低?这是我听过的最大的笑话,你说 Java 的技术栈太笨重了资源占用高我倒是认同
    oneisall8955
        18
    oneisall8955  
       2020-05-24 17:17:44 +08:00 via Android
    JAVA 收人吗?最近找工作,有没有工作年限等要求哦🐶
    namelosw
        19
    namelosw  
       2020-05-24 17:25:24 +08:00
    取决于项目有多大和你手上现在有几个能跟着你搞 Elixir 的人,不一定会 Elixir 但是有意愿就行,因为很简单。会 Rails 的能快速上手。宏,OTP 之类的估计你们这个场景基本不用,一个 Phoenix 就够了。

    比如你感觉用 10 个 Java 程序员就能搞定的话,那可能最多 3 个 Elixir 程序员就可以搞定了,如果算你自己有两个人,随便在找一个人就行了。

    可以估算一下。如果可以 Elixir 的话个人推荐 Elixir,Elixir 的迭代能力和默认架构还是挺不错的。

    迭代能力很重要,Java 很多小功能不划算就懒得做了。而且 Java 算上生态学习成本其实很高,招上来比较水的居多,Java 那些中间件不会搞基本上就很麻烦。Elixir 基本只要会 Phoenix 基本用法,能 follow context 写就够了。
    Cbdy
        20
    Cbdy  
       2020-05-24 17:26:42 +08:00 via Android
    用 Java 平台,繁琐可以上 jvm 语言,比如 groogy 、kotlin
    namelosw
        21
    namelosw  
       2020-05-24 17:31:56 +08:00   ❤️ 1
    @fihserman123
    @jimrok
    @abcbuzhiming

    拜托你们用几个月再来说好不好?你们只说 Java 不低,根本不知道对比的对象有多快有什么意义?

    感觉像除了 PHP 之外啥也没用过,还在一个劲辩护 PHP 的人一样。

    且不提 Paul Graham 以前总说的 3 打 100 的 Lisp 程序员,因为我没见过。但是以前 1 打 10 Java 的 Ruby 程序员大有人在。
    zhuangzhuang1988
        22
    zhuangzhuang1988  
       2020-05-24 17:44:47 +08:00
    睡吧, 反正最后还是 java
    slyang5
        23
    slyang5  
       2020-05-24 17:50:34 +08:00
    团队协作 还是 JAVA 好吧 ☺️
    xcstream
        24
    xcstream  
       2020-05-24 18:04:40 +08:00
    node/python 简单粗暴
    jin7
        25
    jin7  
       2020-05-24 18:05:59 +08:00
    java 是最好的语言
    huntcool001
        26
    huntcool001  
       2020-05-24 18:14:32 +08:00
    等到时候招不到人的时候就哭呗.
    chendy
        27
    chendy  
       2020-05-24 18:19:40 +08:00
    做黄了用啥都无所谓
    做好了用啥也不所谓
    开心就好
    sagaxu
        28
    sagaxu  
       2020-05-24 18:20:48 +08:00 via Android
    @namelosw 10 个普通 Java 开发年成本按 300 万算,能 1 打 10 Java 的高级 Ruby,用一半成本 150 万年薪能不能招得到?
    crella
        29
    crella  
       2020-05-24 18:25:18 +08:00 via Android   ❤️ 2
    求介绍一下 1 打 10Java 的 Ruby 程序员
    namelosw
        30
    namelosw  
       2020-05-24 18:54:58 +08:00
    @sagaxu 可以吧,但是 Ruby 被连续抹黑,现在已经没多少 Ruby 程序员了。Elixir 算半个精神继承人吧。

    其实打 10 个并没有那么难,因为 Java 项目一般搞一套 Kubernetes,Jenkins,Zookeeper,Kafka……各种东西搞全几个 team 就出去了。很多人没干实事,但是白白增加了团队规模,提高管理复杂度。

    用 Ruby 一般都是用现成的东西一路闷头只写功能。所以大家才能看到某一段时间大量的独角兽都是 Ruby 支撑起来的。
    mikulch
        31
    mikulch  
       2020-05-24 18:58:05 +08:00 via iPhone
    java 开发效率低?
    ConradG
        32
    ConradG  
       2020-05-24 18:59:49 +08:00
    就用 Ruby 呗,四个人不多不少,github 最早也是 ruby 做的。
    sagaxu
        33
    sagaxu  
       2020-05-24 19:21:30 +08:00 via Android   ❤️ 2
    @namelosw k8s 解决的是大规模容器的部署问题,跟 Java 无关,规模上去了,ruby 也需要 Jenkins 是做 CI/CD 的,跟语言无关,不用 CI/CD 就不需要。zk 和 kafka 也一样,都不是 Java 必备,甚至连常用都不算。

    普通 Java web 项目标准起步,是 starter 上点几下鼠标,下载个 maven/gradle 模板项目,然后就开始写接口了。你说的那些费人力的设施,那是规模上去之后才需要考虑的,到那个阶段,核心服务基本都会重构成静态类型语言。

    最近五年都有哪些 ruby 起来的独角兽?
    daya
        34
    daya  
       2020-05-24 19:36:25 +08:00 via iPhone
    elixir 还是算了吧,再招人的时候你就知道了,调各家的 SDK 也都没有,都要自己写
    xieren58
        35
    xieren58  
       2020-05-24 19:59:53 +08:00
    js 吧. 前后通杀. 轮子又多.创业首选.
    namelosw
        36
    namelosw  
       2020-05-24 20:21:13 +08:00
    @sagaxu > 规模上去了,ruby 也需要 Jenkins 是做 CI/CD 的
    Heroku 一把梭,而且人少引入 CICD 就慢。

    > k8s 解决的是大规模容器的部署问题,跟 Java 无关
    Java 是比较容易搞一堆 Servcie 的,不知道是不是和 Java 9 之前没 module 有关系。Ruby 一般就一把梭就好了。有个问题是代码多了很坑,我觉得静态类型不是主要的(因为 Java 大了都搞 Microservice,实际代码没多少也不用静态类型一样,HTTP 也算动态类型),主要是没分 context 。Elixir / Phoenix 默认是分 context 的。

    > 核心服务基本都会重构成静态类型语言。
    我只知道 Twitter 这种的重构,Github,Airbnb,Hulu 这些都还在用 Ruby,也没啥问题。

    > 最近五年都有哪些 ruby 起来的独角兽?
    所以你没发现只有 Ruby 火的时候独角兽才大批出现,之前和之后独角兽相比都很少吗?
    CoderGeek
        37
    CoderGeek  
       2020-05-24 20:21:49 +08:00
    只是创业 看团队人怎么都能招到 看你现在团队的技术方向
    Hanggi
        38
    Hanggi  
       2020-05-24 20:29:48 +08:00
    这个问题问得很有水平,请务必使用 Elixir,
    lhxsimon
        39
    lhxsimon  
       2020-05-24 20:34:57 +08:00
    初创团队讲求糙快猛,成员会啥用啥。反正后面都是重构。

    不过如果这两个非要选一个,我建议是 Java, Elixir 生态不行,你各种跨语言通信,第三方 SDK 等等都不太好弄。

    除非你们能完全自己造轮子,否则 Java 更符合糙快猛的特征。

    最后我还是推荐下 Go,既然你们已经用 Go 魔改了 Gitea,为啥不用 Go 继续做 API 呢?
    pigspy
        40
    pigspy  
       2020-05-24 20:35:37 +08:00
    除非在广州这些地方,erlang 很难招人吧
    charlie21
        41
    charlie21  
       2020-05-24 20:42:11 +08:00
    用 Elixir 能拉来天使投资吗?
    fixend
        42
    fixend  
       2020-05-24 20:48:20 +08:00 via Android
    @lhxsimon 我也推荐 go,比较适合创业公司。
    HangoX
        43
    HangoX  
       2020-05-24 20:53:34 +08:00
    用 kotlin 就好了,kotlin 足够成熟,也足够灵活,能直接使用 javaweb 的全部生态
    janxin
        44
    janxin  
       2020-05-24 21:19:24 +08:00
    @namelosw 其他没留意,按照 GitHub 最新博客的说法是迁移了的
    gejun123456
        45
    gejun123456  
       2020-05-24 21:33:50 +08:00
    @fixend #42 java 要比 go 更适合创业团队,库比 go 多多了,各种库也比 go 的成熟。招聘的程序员也更多。go 除了省点资源做业务相比 java 没看到任何好处。
    coetzee
        46
    coetzee  
       2020-05-24 21:39:04 +08:00   ❤️ 5
    作为一个会多门语言的人说一下:
    1:单轮 Web 开发效率的话,Java 的确开发速度一般,没法跟 ROR 和 PHP 这种比,不过比 Golang 高不到知道哪儿里去了。
    2:如果轮上运行效率大于你说的 Ruby 和 PHP,Java 算是主流开发语言的 NO1
    3:论中间件成熟度和扩展方案,Java 还是 NO1
    4. 如果纠结于 Java 语法啰嗦问题。上 Java14 。或者上 Kotlin,OK,如果都嫌弃说不如 Ruby 魔法多,那么 Scala 等着你,简洁,你想要的特性,你要的开发效率。都存在。还有个 groovy 这种动态语言存在,其实 JVM 可选择很多。
    5:语言之争无意义,Java 背后那套开发的东西,你用别的也绕不过,web 开发和分布式开发就那套东西,换了语言照样需要学,不存在说 Java 需要学一大堆生态的问题,你简单应用,一个 grails 或者 springboot 也能搞定。
    6:贬低 Java 并不能说明你别的语言有多牛逼,想要玩特性,不然玩玩 Scala ???
    lfcyme
        47
    lfcyme  
       2020-05-24 21:40:00 +08:00 via Android
    插眼 我们用 elixir 的 狗头.jpg
    miao666
        48
    miao666  
       2020-05-24 21:43:14 +08:00 via Android
    面相信仰编程🤔
    coetzee
        49
    coetzee  
       2020-05-24 21:43:38 +08:00   ❤️ 1
    @gejun123456 同意你说的。前期 Golang 的资源利用率的确高,但是大型应用和分布式应用,golang 的资源未必节省,而且 golang 的很多方案很多坑,比如 ORM 类 Golang 至今没有合格的库,很多坑都需要亲自踩一遍。Java 的新出的一些 cloud native 框架,资源占用和启动速度也不差,而且完美利用 Java 成熟生态。创业公司就要尽量少在技术上踩坑,专注于自身业务。别听别人鼓吹,每个公司都有自己的情况,保持点独立思考。再说一遍,黑 Java 并不能给你们带来什么优越感,黑 Java 的同学建议体验下 Scala 去
    murmur
        50
    murmur  
       2020-05-24 21:44:20 +08:00
    看创啥业,企业开发无脑 java
    fixend
        51
    fixend  
       2020-05-24 21:46:31 +08:00 via Android
    @gejun123456 go 招个大专毕业生,成绩中等,带一周,我敢让他写核心模块代码,你招 java 的,敢吗?面相对象的能力,工作 3 年,还设计成一坨 shi 的人不少。java 的人是多,高级别的人也多,但普遍也贵。
    pythonee
        52
    pythonee  
       2020-05-24 21:47:27 +08:00
    使用 java
    coetzee
        53
    coetzee  
       2020-05-24 21:48:59 +08:00   ❤️ 1
    @fixend 你是想表达 golang 学习简单,还是 golang 开发业务核心不需要面向对象?你觉得 Java 那种面向对象和 golang 那种面向对象哪种好理解? Java 的面向对象有啥理解难度么?
    coetzee
        54
    coetzee  
       2020-05-24 21:51:42 +08:00   ❤️ 3
    我再说一遍。你要开发,核心技能离不开,而且技术债早晚还回去。你 Golang 开发业务不用 DI ?你 golang 开发业务不用写 SQL,你 golang 开发业务不用面向对象?新手 Golang interface 理解的透彻的都不多。golang 好处的确不少,开发中间件现在是利器,而且 cloud native 自有一套开发理念,值得 Java 学习,Go 作为新时代 PHP 的确牛,但是无脑吹就过分了
    jimrok
        55
    jimrok  
       2020-05-24 21:54:23 +08:00
    @namelosw 怎么知道没有用过几个月就来说不好,我 Ruby 用过 2 年多,Ruby 团队规模超过 6 个人。Elixir 出来之后也研究这个语言是否能解决 Ruby 的一些问题。我的结论还是 Java 的效率更高,团队能走的更远,只要项目的规模超过中等以上,java 都是不错的选择。
    EPr2hh6LADQWqRVH
        56
    EPr2hh6LADQWqRVH  
       2020-05-24 22:07:35 +08:00
    选 Java 不一定对,但一定不算错。

    Java 不会给你任何竞争优势,但也不会让你在什么地方落得太远。

    看你是想赢还是想不输。
    jeffh
        57
    jeffh  
       2020-05-24 22:09:47 +08:00 via Android   ❤️ 1
    用 java 吧,Java 已经不是以前的 java 了,springboot 和 stream 流式编程效率很高
    sagaxu
        58
    sagaxu  
       2020-05-24 22:14:27 +08:00 via Android
    @namelosw heroku 支持 8 种语言,Java 一样用。你觉得 Java 容易搞一大堆微服务,一是因为 Java 微服务设施齐全门槛低,二是大公司 Java 用的多,微服务是大业务刚需。

    airbnb 和 hulu 后端主力早不是 ruby 了
    levelworm
        59
    levelworm  
       2020-05-24 22:16:16 +08:00 via Android
    Use old and boring technologies
    fixend
        60
    fixend  
       2020-05-24 22:20:51 +08:00 via Android
    @coetzee 我只是想说成本低。如果你创业有大把资金大把牛人,那你当我没说。至于走得远不远,近几年发展起来的公司,用 go 的也不是没有先例。

    先要看团队擅长什么,如果 java 和 go 都不擅长,学 go 肯定更快的。如果已经有架构师级别的 java 程序,转 go 就没必要。

    @coetzee 然后 go 可以用面向过程来写,当带 gc 的 c 语言来用。
    namelosw
        61
    namelosw  
       2020-05-24 22:23:29 +08:00
    @jimrok 所以为什么 Java 效率更高呢?规模中等以上我能理解,中等以下呢?
    zlfera
        62
    zlfera  
       2020-05-24 22:25:59 +08:00
    phoenix 比 rails 用的一目了然
    namelosw
        63
    namelosw  
       2020-05-24 22:29:57 +08:00
    @sagaxu Heroku 上用 Java 的很少,起一堆 Service bill 会炸
    我去年看 Airbnb 和 Hulu 的 JD 还是 Ruby

    微服务不一定是刚需,只是一种架构风格。比如 Elixir 基本很长一段时间都不需要微服务,至少中型公司是完全不用的。
    gilgameshcc
        64
    gilgameshcc  
    OP
       2020-05-24 22:56:10 +08:00
    非常感谢大家的回复,我们之前内部也讨论了非常多。最终确定目前还是业务为重,觉得 java 会比较稳妥,因为团队内都具有 c 类语言的经验。不过 elixir 确实很棒,以后有需要的时候在团队更大的情况下我们会考虑抽调部分人去转。欢迎大家以后多关注我们呀,我们在做一个开源的学术信息类社区,希望能够开源更多东西,带来更多价值(挺有情怀的 233 )
    jimrok
        65
    jimrok  
       2020-05-24 23:16:56 +08:00
    @namelosw 中等一下参考的意义不大,小规模的项目任何语言都可以对付一下。一旦应用规模扩大,就需要跟另外的服务进行集成,小众语言在这方面就是个陷阱,我们当时用到了 mqtt,当时的 ruby 的库里面就没有靠谱的 mqtt clinet,我必须自己 hack 进代码里面查找问题,开发效率能高的了吗?反正这是我得出来的结论,谁喜欢跳坑谁去跳。
    ChristopherWu
        66
    ChristopherWu  
       2020-05-24 23:41:18 +08:00
    看人,如果你团队水平都不错,用 elixir,事半功倍。
    如果想爽,用 Elixir
    (工作中使用过两年 elixir 应对高并发的真诚回复
    woncode
        67
    woncode  
       2020-05-24 23:42:30 +08:00 via Android
    我实在搞不懂,为什么张口就来 1 个 ruby 干 10 个 java,为什么把 k8s 、jenkins 这些都算到 java 的头上?

    意思用 ruby 写出业务代码放在那里就完事啦?啥都不用管它就很好的跑起来啦?就能自适应地应对业务变大、流量膨胀这些问题啦?

    我看来其实就是拿一个三四人组成、低度自动化的小作坊( ruby ),和一个分工明确、高度工程化的标准大厂( java )来比较吧

    然后不看两者的生产效益和产品质量,只简单地对比两者的人头数,最后张口就来 1 个 ruby 干 10 个 java ?
    BillowSky
        68
    BillowSky  
       2020-05-24 23:45:37 +08:00 via iPhone
    产品先行,哪个开发快,用着顺手就用那个,一开始纠结于用什么已经凉了一半。
    woncode
        69
    woncode  
       2020-05-25 00:02:20 +08:00 via Android   ❤️ 1
    @fixend 以前只听说过 java 语法严谨的特性,使得不管大牛还是菜鸡,写出来的代码都差不多的言论,还没听过 go 在这方面比 java 还更厉害的说法。

    你说专科学 go 一周就能让他核心代码,那能否设想一下,你这所谓的核心代码,如果换成 java,同样让专科学一周,你就不敢让他写吗?具体是这方面 java 相对于 go 有什么缺陷呢?
    araaaa
        70
    araaaa  
       2020-05-25 00:41:42 +08:00 via iPhone
    elixir
    ppphp
        71
    ppphp  
       2020-05-25 00:43:39 +08:00
    看描述其实用两个语言差别也没多大,就看乐意用哪个了,精力可以放更多在商业上
    rrfeng
        72
    rrfeng  
       2020-05-25 00:46:56 +08:00
    取决于你对未来的规模。如果保持 2-3 人团队 elixir 没问题,如果要 10 人以上,趁早用 java 。
    zealinux
        73
    zealinux  
       2020-05-25 01:01:51 +08:00
    如果还可以选其他,
    推荐 Ruby on Rails
    bef0rewind
        74
    bef0rewind  
       2020-05-25 01:13:23 +08:00
    除非都是高手,否则用流行的语言。
    lights
        75
    lights  
       2020-05-25 01:18:30 +08:00
    孤陋寡闻,我是第一次听说 elixir 这个语言
    vultr
        76
    vultr  
       2020-05-25 01:38:47 +08:00
    你现有的团队熟悉 elixir 的话就用 elixir,不要为了好招人之类的原因而选其它的,好招并不代表你能招到好的,与其让外来和尚影响现有团队,不如让他们融入现在团队。
    fixend
        77
    fixend  
       2020-05-25 02:32:24 +08:00 via Android   ❤️ 1
    @woncode 刚毕业的新人,无项目经验,一般只会点基本语法,甚至语法都没学得多好。

    spring boot,netty,dubbo,mybatis 学会要不少时间吧?就算会用,翻里面的代码看懂实现原理又用了多久?

    你们可能觉得这些人很菜,5,6 百人的小公司,4-8k 的待遇,也就只能招到这种水平的,毕竟不是大厂,动不动就出十几二十 K 去招毕业生。

    一个只会 c 语言的毕业生,学会 go 的语法,翻翻 gin,iris,net,database/sql 的实现代码,会用并了解一些基本的原理,用不了多久。

    go 的代码未必有多好写,写起来未必有多方便,但相当容易读懂。

    我一直都觉得知其然知其所以然十分必要,否则很容易给你留下无数的坑。
    blless
        78
    blless  
       2020-05-25 02:37:17 +08:00 via Android
    我倒是觉得 java setter getter 一套 mvc 业务贫血模型感觉潜移默化了一大部分人,写出来的东西根本不面向对象。而且我写了这么久业务了,越来越觉得面向配置开发 /面向数据库开发不是好模式…反正有好有坏吧
    kevinzhow
        79
    kevinzhow  
       2020-05-25 03:18:38 +08:00 via Android
    技术本身的问题好解决,招不到人的问题比较难,但即使用 Java 这类技术,招到合适的人也很难
    dodo2012
        80
    dodo2012  
       2020-05-25 03:42:59 +08:00
    看到上面一群不懂 ruby 还装懂的人真搞笑,还现在都没用 ruby 搞的了?只是国内用的少而已
    GTim
        81
    GTim  
       2020-05-25 07:24:46 +08:00
    从公司角度看,选 Java
    ResidualSoils
        82
    ResidualSoils  
       2020-05-25 07:26:14 +08:00 via Android
    .net core
    tt67wq
        83
    tt67wq  
       2020-05-25 08:36:54 +08:00
    Elixir 是真招不到人。。。。多少人连 erlang 都没听过
    coetzee
        84
    coetzee  
       2020-05-25 08:56:55 +08:00   ❤️ 2
    我前面说了那么多 Java,仅仅是针对公司而已。
    说点别的,如果是个人语言选择,选 Golang,选 Golang,选 Golang 。
    优点:
    1. Golang 简单直接,代码可读性高,黑魔法少,说的就是你,各种接口和注解的 Java,过度封装导致代码可读性下降很大,Ruby 和 Python 真的一个人一个风格。这点来看,Golang 语法学会之后直接读优秀开源项目最简单。可以很快提升自我
    2. CloudNative 势不可挡,Golang 是这个趋势下的龙头语言,其他的语言都是追随者,你甭管再怎么黑 golang 大道至简特性,这点你逃不开,这套生态完全就是 Golang 的天下,就跟大数据就是 JVM 天下一样,一统江湖不可能,千秋万载不可能,只能说这个领域 golang 就是王者,而且趋势会继续加大,薪资待遇也很好和人员也是大量稀缺
    3. Go 的群众基础很好,上手简单,就跟 Python 一样,入门简单,这点非常重要,会很快有大量的群众基础,各种库的生态也在完善过程中,对于个人来说,可以建功立业的时候,Java 这种已经非常巩固的城墙,想攻城拔寨很难。
    4. Java 体系老人的知识面和 JVM 的知识体系+OS 体系的知识远大于 golang 的知识。对于帖子上面黑 Java 的,我觉得还是有道理的,Java 在企业级开发中的好处和坏处都要客观面对,Java 的套路化,繁琐的套路其实很多都是人为设计出来的,你一般学习 OS 层知识就够了,Java 不仅 OS 要学好,JVM 也不能落下,各种 Java 知识点,真的太多了。其实我认为都是 Java 早期的一些设计导致的。springboot 这种,其实利用约定优于配置封装了这些复杂配置而已( ROR 是祖师爷)。
    5. Java 开发者高手众多,培训班众多,内卷严重。大家想一下,如果个人喜好的话,我们可能更喜欢 Python,Ruby 这种,而不是 Java 这种,但是面向发展编程,面向薪资编程,我的个人建议是原理这种内卷非常严重的大量老人的语言,选择新的战场对于新人职业更加友好。你想一下,一个 PHP 转 golang,你一个新手 golang,大家的 Golang 使用经验都是相同的,起跑线没有那么远。你一个 Java 动则 10 年经验,再菜,看到的场景也不少,喜欢拿着老人姿态对待年轻人,极其不友好。Golang 体系野蛮生长中,兼容并包,这点非常好,至少国内 Golang 社区氛围我认为仅次于前几年的 Ruby China 。
    6. 企业开发和个人开发的语言选择存在一个博弈关系。现在 Java 在大趋势上,如果单纯论工作,现在的确比别的语言都多,毕竟大而不倒。不过,你如果多看看谷歌趋势和百度趋势,还有一些新的独角兽公司的选择,Golang 基本是第一。
    7. Golang+Python+一门函数式语言足矣应付你的职业生涯一切场景。想玩语言特性了,找个函数式语言搞搞玩,真正的实战,还是 Golang,Java 这种。
    sagaxu
        85
    sagaxu  
       2020-05-25 09:01:32 +08:00 via Android
    @fixend 工作十年了,spring boot,netty,dubbo,mybatis 只用过两个,都没看过代码,这文档是要写多烂,不翻代码还用不好了。
    magiclz233
        86
    magiclz233  
       2020-05-25 09:04:43 +08:00
    Java 吧 库很多 合理使用开发效率并不慢,你说的 Elixir,我感觉估计有一半以上的人都没听过,而且用 Java 一些琐碎的功能基本都有现成的开源包使用或者借鉴,比如验证码,三方登录啥的。Elixir 可能遇到某些问题没有现成的自己开发。
    ArtIsPatrick
        87
    ArtIsPatrick  
       2020-05-25 09:11:53 +08:00 via iPhone
    看你这个项目是想自己玩玩还是准备认真做大
    coetzee
        88
    coetzee  
       2020-05-25 09:16:06 +08:00
    @sagaxu 你还别说,Golang 的大多数项目的确文档一般,但是我发现 Golang 的源码的确更好阅读,Java 的优秀项目的代码我也读过一些,Spring,Guava,JDK 这种,从代码阅读友好度来说,的确 Golang 完胜 Java,这点没啥好纠结的,Java 比不过的地方也不能强行说好,Golang 优点和缺点都很明显,Java 也是。就跟饮食一样,大家都有自己偏好,不过我不大挑食。只是我觉得代码写起来手感 Java 更好~。Golang 代码读起来更好
    shilyx
        89
    shilyx  
       2020-05-25 09:25:00 +08:00
    可能更重要的是要参考团队成员对语言的熟悉程度

    我刚经历的,2 个月从零开始使用 go 语言并发布产品,之所以采用 go,是因为大家对这个都不熟悉,容易从语言上到一个心的起点。前端用的 vue
    securityCoding
        90
    securityCoding  
       2020-05-25 09:48:23 +08:00
    @gejun123456 用 go 多写写业务代码就知道 java 的好处了,框架代码哪个都能写 哈哈
    yuankui
        91
    yuankui  
       2020-05-25 10:12:19 +08:00
    ruby 、Elixir 不好招人就是了。就算找了个感兴趣自学的,可能并不具有排查解决问题的能力。
    慎重
    zjsxwc
        92
    zjsxwc  
       2020-05-25 10:23:09 +08:00
    楼主这种建议 java,Elixir 太小众了。

    还有 golang 里面嵌入 lua 后写业务效率还行,逃
    gejun123456
        93
    gejun123456  
       2020-05-25 10:38:55 +08:00
    @coetzee #88 go 的框架发展都没有多少年,并且 go 没有泛型,肯定易读,java 的框架比如 spring 都发展几十年了,各种扩展和兼容,就没那么好读了,写一个简单的支持 ioc 和 aop 要不了多少代码,把代码写死肯定是最易读的。选一个框架重要的是这个框架能不能满足需求和扩展性吧,大部分开发业务肯定是投入时间到业务里面,java 框架都比较成熟出 bug 的概率小,扩展性强,使用 go 碰到框架的 bug 就要自己去修了。
    iv2ex
        94
    iv2ex  
       2020-05-25 10:44:40 +08:00
    java ;

    产品用什么语言都能做,但是不是什么语言都能轻易找到人进行后期维护。

    第一次遇到 Elixir,还是做澳门的项目。当时谈让我们做二期,我们的规划是直接重写。(后面没谈下来)
    slert
        95
    slert  
       2020-05-25 11:00:29 +08:00
    php 不香吗
    lonelymarried
        96
    lonelymarried  
       2020-05-25 11:04:40 +08:00
    node.js?
    cloudhuang
        97
    cloudhuang  
       2020-05-25 11:05:04 +08:00
    实际的回答是 it depends,根据不同的场景,不同的业务阶段,不同的团队,答案都是不同的,最终还是需要楼主自己作出判断。
    1. 团队成员目前的情况,4 个伙伴,是精通 Java 多一些,还是 Elixir 多一些
    2. 不同的业务阶段,初始阶段,当然是希望尽快的推出产品(可能是 POC),这个时候一些快速开发的工具,确实可以节省很多的时间
    3. 业务快速发展阶段: 这个时候,随着业务的快速发展,势必需要招聘更多的开发人员,这个时候,不同的语言,招聘成本会相差好几倍
    4. 维护阶段,则需要考虑这个语言是否稳定了

    不过实际上 Java 现在在开发接口方面其实不慢的。
    jinzhongyuan
        98
    jinzhongyuan  
       2020-05-25 11:07:09 +08:00
    java 如此 标准,规范, 工程化,你还犹豫啥
    cbasil
        99
    cbasil  
       2020-05-25 11:18:45 +08:00
    web 快速开发选 PHP 啊,别说啥 php 性能慢,初创公司的业务量还不到 PHP 无法支撑的地步
    lidashuang
        100
    lidashuang  
       2020-05-25 12:06:59 +08:00
    Elixir +1
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2581 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 06:17 · PVG 14:17 · LAX 22:17 · JFK 01:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.