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

真心佩服 Java WEB 程序员

  •  
  •   owenliang ·
    owenliang · 2017-11-15 18:02:53 +08:00 · 12086 次点击
    这是一个创建于 2564 天前的主题,其中的信息可能已经有所发展或是发生改变。

    为了写一个网站可以掌握那么多的 lib 和 conf,我试着学很快就感觉枯燥无味了,可以称为学习成本比较陡峭。

    虽然我知道很多 JAVAER 也只是停留在直接搬砖的水准,但是我仍旧佩服那些基础扎实的 JAVAER,他们学到今天真的很不容易。

    反观其他语言,只要有 web 开发经验,上手的心智压力貌似都不大,可惜他们基本都是脚本语言,跨界能力都各有局限。

    86 条回复    2017-12-01 10:25:02 +08:00
    FanError
        1
    FanError  
       2017-11-15 18:04:08 +08:00 via iPhone
    楼主试下 spring boot
    owenliang
        2
    owenliang  
    OP
       2017-11-15 18:05:31 +08:00
    @FanError 我不是讨论用什么简单,我是说一步一步搞上来的好 JAVAER,其实还是挺稀缺的。
    watzds
        3
    watzds  
       2017-11-15 18:06:47 +08:00 via Android
    特别是以前上学时,一上来就是 ssh 框架,看得我都怀疑自己能力了。
    bramblex
        4
    bramblex  
       2017-11-15 18:09:26 +08:00
    @owenliang

    一步一步搞上来的好程序员一直都很稀缺啊, 不管什么语言都一样啊.

    这是人靠谱, 基础扎实, 跟用什么语言关系不太大吧.
    owenliang
        5
    owenliang  
    OP
       2017-11-15 18:10:24 +08:00
    @watzds 是,上学时 JAVA 同学好几本砖头。。。开发不一定都要理解,这就是 JAVA 重框架轻原理(是指不需要完全理解就可以做事)的一个现实。
    xiaoshangmin
        6
    xiaoshangmin  
       2017-11-15 18:10:48 +08:00 via iPhone
    @watzds 哈哈哈 同感
    abcbuzhiming
        7
    abcbuzhiming  
       2017-11-15 18:10:49 +08:00   ❤️ 1
    脚本语言的最大问题不是跨界能力,python 怎么不能跨界了?脚本语言的最大问题是,类型系统的太随意导致组织大项目的时候很成问题。


    @FanError spring boot 仅仅是把一堆 lib 组装起来,让你开箱就能立即跑起来个 http server,跟 node.js 的思路类似。但是你若真想搞出个能用的 web server,你还是要自己配置很多额外的东西的,而且 spring boot 的文件组织和打包方式和常见 jar,war 都不太一样,这里面是有坑的,我非常不推荐没自己搞定过一套 spring 架构配置的人上手就去弄 spring boot
    owenliang
        8
    owenliang  
    OP
       2017-11-15 18:11:58 +08:00
    @bramblex 虽然可以这么说,但是语言归根结底是一个程序员的标志,除非真的所有语言都号称精通,否则总会有一个日常代表性的主要使用语言。
    p2pCoder
        9
    p2pCoder  
       2017-11-15 18:12:30 +08:00
    java 终究还是 一门 面向对象的 语言,面向对象 还是为了解决工程问题方便
    owenliang
        10
    owenliang  
    OP
       2017-11-15 18:13:01 +08:00   ❤️ 1
    @abcbuzhiming 其实目前从大家选择 JAVA 的理由来看,重要的还是轮子和工具比较先进为主。 技术生产力的提升是企业的追求,国家的追求。
    ming7435
        11
    ming7435  
       2017-11-15 18:13:17 +08:00
    一切为了生活
    mikicomo
        12
    mikicomo  
       2017-11-15 18:13:51 +08:00
    不知道为啥...可能没写过别的语言的 web 项目,感觉 ssm 还好吧...编译原理贼 jb 难
    TakWolf
        13
    TakWolf  
       2017-11-15 18:14:18 +08:00
    不觉得 Java 学习陡峭
    不认为 Java 重框架轻原理,应该懂得东西还是要懂
    觉得跟语言没关系,其他语言也有相同的问题
    owenliang
        14
    owenliang  
    OP
       2017-11-15 18:15:16 +08:00
    @p2pCoder 其实目前绝大多数语言都是 OO,但是 JAVA 是一个各方面都比较均衡的语言,这一点可以拿 PHP,PYTHON 来做比较,就会发现 JAVA 无论是语言本身,还是围绕 JAVA 的工具链都是先进的,整个发展的力量很大。
    Wicked
        15
    Wicked  
       2017-11-15 18:21:31 +08:00 via iPhone
    @owenliang JAVA 落到 oracle 手里不是也逐渐消沉了么?
    Wicked
        16
    Wicked  
       2017-11-15 18:22:19 +08:00 via iPhone   ❤️ 2
    C++程序员笑而不语,每一次标准发布都要重新学语法
    jatesun
        17
    jatesun  
       2017-11-15 18:25:13 +08:00
    楼主说的我都想哭了→_→
    owenliang
        18
    owenliang  
    OP
       2017-11-15 18:31:29 +08:00
    @Wicked 语言迭代慢点对程序员是好事,但是框架迭代越来越快了。
    owenliang
        19
    owenliang  
    OP
       2017-11-15 18:31:51 +08:00
    @jatesun 乐观点,坚强。
    owenliang
        20
    owenliang  
    OP
       2017-11-15 18:32:13 +08:00
    @Wicked 我也搞 C++,表示自从工作语言不用 C++后已经不学新语法了。
    yanjinbin
        21
    yanjinbin  
       2017-11-15 18:44:58 +08:00
    你写的那坨 还比不过 Java 基础好的
    nicevar
        22
    nicevar  
       2017-11-15 19:04:15 +08:00
    这些东西了解要不了多长时间,以后变动不大,其实 Java 的 lib 还好管理,配置稍微麻烦点,个人觉得 Nodejs 的库更麻烦,你看一些开源项目一大堆人按照 readme 都跑不起来的
    owenliang
        23
    owenliang  
    OP
       2017-11-15 19:10:09 +08:00 via Android
    @nicevar nodejs 除了拿来 react 也就不用了,async await 完全不看好,拿什么和 golang 比。
    nicevar
        24
    nicevar  
       2017-11-15 19:10:09 +08:00
    @Wicked C++没你说的那么夸张,新标准出来很长时间才会普及用,很多公司都是四五年之后才用,写 10 年的话也就学两次,一次花的时间也就是几天
    CtrlSpace
        25
    CtrlSpace  
       2017-11-15 19:15:35 +08:00   ❤️ 4
    1 其它语言没有 Spring 全家桶这么牛逼的开源社区和解决方案。

    2 Android 转 Java Web 的路过,发现 Android 开发真的是性价比很高,同样是 Java 语言,但是难度更低,一样拿到高薪,而 Java Web 需要做的学的,远远超过 Android 同时期所需掌握的技术。

    3 但因为如此,Java Web 的天花板更高,进可大数据,退可 CRUD ←。←
    owenliang
        26
    owenliang  
    OP
       2017-11-15 19:17:43 +08:00 via Android
    @CtrlSpace 感谢分享。
    sammo
        27
    sammo  
       2017-11-15 19:19:27 +08:00
    我佩服所有程序员
    nl101531
        28
    nl101531  
       2017-11-15 19:20:02 +08:00 via Android
    我觉得对于 java 程序员是很容易掌握其他技能
    owenliang
        29
    owenliang  
    OP
       2017-11-15 19:22:13 +08:00 via Android
    @nl101531 在 web 这块 spring 肯定是楷模了。
    shijingshijing
        30
    shijingshijing  
       2017-11-15 19:23:07 +08:00
    @nl101531 学了 C/C++,其他语言一周上手。
    nicevar
        31
    nicevar  
       2017-11-15 19:24:42 +08:00
    @owenliang 其实 Java Web 也有比较好用的地方,比如配置好一套之后,后面的项目基本上就用这个模子,特适合小型公司和个人项目,发布也方便,现在配合 kotlin 连代码都能省了
    owenliang
        32
    owenliang  
    OP
       2017-11-15 19:25:33 +08:00 via Android
    @shijingshijing 有工作驱动应该没问题,我是 c++服务端,后来转做 PHP 增删改查和 golang,c++基本没机会用了,一些扩展场景 c 还能用到。
    owenliang
        33
    owenliang  
    OP
       2017-11-15 19:26:18 +08:00 via Android   ❤️ 1
    @nicevar 重点就是有模板,懂原理,然后就进入搬砖模式了。
    shijingshijing
        34
    shijingshijing  
       2017-11-15 19:36:52 +08:00
    @nicevar 你说的这个从技术上是正确的,但是现实是,很多小企业都是用 PHP。一是 PHP 门槛低,二是 java web 起码还得上个 tomcat 吧,这个对于很多 web hosting 或者 VPS 有点不现实。

    @owenliang 我上面那句,其他语言不包含汇编
    dobelee
        35
    dobelee  
       2017-11-15 19:57:14 +08:00 via Android   ❤️ 2
    这说明 php 是世界上最好的语言。
    abbenyyy
        36
    abbenyyy  
       2017-11-15 20:02:05 +08:00
    @CtrlSpace 大佬能说一下怎么转 Java Web 么,我也想转...现在卡在不知道如何在新的云服务器上面部署 SpringBoot 项目(就是一个新的 linux 怎么跑 SpringBoot 项目)..搜索了一下,很少人讲这个东西。
    luban
        37
    luban  
       2017-11-15 20:03:15 +08:00 via iPhone
    @abbenyyy 这个和 win 上差不多,就是注意下环境变量 jdk 路径
    loopback
        38
    loopback  
       2017-11-15 20:23:44 +08:00
    @abbenyyy #36
    Spring Boot executable jar
    HYSS
        39
    HYSS  
       2017-11-15 20:32:21 +08:00
    试试 PHP 的 Symfony?
    yinzhili
        40
    yinzhili  
       2017-11-15 20:34:54 +08:00
    @abbenyyy 本身 Spring Boot 应用就可以打包成一个巨大的 jar,只要配置好 JAVA_HOME 不就完事了吗。
    Actrace
        41
    Actrace  
       2017-11-15 20:36:26 +08:00
    语音编程的我笑着路过。
    CtrlSpace
        42
    CtrlSpace  
       2017-11-15 20:42:20 +08:00   ❤️ 1
    @abbenyyy 新机器,先搭建环境,git / jdk / maven / mysql / nginx 等。
    至于部署,有 jar 部署和 war 部署,搜一下应该都有说明吧。
    一般 jar 部署,添加 spring-boot-maven-plugin 这个 maven 插件,执行 mvn clean package,然后 target 文件夹就有个 jar 文件了。最后直接 java -jar xx.jar 运行就行了。(一般写到 shell 文件,方便管理)


    不知道你问的是不是这个。。。


    转 Java Web 的话,多看书,多看开源的 Java Web 项目吧,模仿他们的套路,以下刚撸的书

    ![]( )
    weics
        43
    weics  
       2017-11-15 20:42:51 +08:00   ❤️ 1
    springboot 抽象太高了,有很多暗坑
    nicevar
        44
    nicevar  
       2017-11-15 20:42:59 +08:00
    @shijingshijing 小型企业都是 php 是你的个人印象造成的,你如果去看一些侧面统计数据就知道了,采用 java 的小企业并不比 php 少并且在三四线城市逐渐有上升趋势,只能说偏向前端型的用 php 比较多,另外现在入门的 vps 跑个 tomcat 放小型网站没啥问题,只要访问量不是太大的话
    pq
        45
    pq  
       2017-11-15 20:47:40 +08:00
    相对来说,php 入门甚至到中级水准,都要容易得多,小白一周内就可以弄个 demo 出来。。。:D
    yuanfnadi
        46
    yuanfnadi  
       2017-11-15 20:54:16 +08:00 via iPhone
    @abbenyyy 直接 gradle build 以后,放在 docker 容器里面跑
    anmaz
        47
    anmaz  
       2017-11-15 20:57:28 +08:00 via Android
    最近在弄.net ,各种恶心,对于我这种半桶水的 java 来说,居然觉得 java 的 lib 库等等是真的好
    loveship
        48
    loveship  
       2017-11-15 20:59:51 +08:00
    鄙视所有动态语言,真 tm 竟然有这种废物语言还有人用?
    Infernalzero
        49
    Infernalzero  
       2017-11-15 21:25:29 +08:00   ❤️ 1
    Java 这一堆框架虽然很多都不需要了解原理就能拿来干活,但这也只保证了你能干点简单的活,要保证不踩坑以及做更进阶的开发对这些框架的了解是必须的
    gmywq0392
        50
    gmywq0392  
       2017-11-15 22:25:24 +08:00 via Android   ❤️ 1
    写 Java,大多是生计所迫啊。特别是 WEB。

    有看过这样的类比,大多数程序员工作时是用购物时的心态写的,阿这个我要,阿这个可以换成这个,阿这个颜色好像更搭,阿这个东东我到底需不需要,阿这样会不会太多了……

    编程的视野是受货架决定的。

    这里主要 Java 的超市比较大。比较大。而且实惠又耐用,逛的人自然多了就。

    但光会逛也不行呐,bug 们可都在超市门口等着呢。
    otakustay
        51
    otakustay  
       2017-11-16 00:10:59 +08:00   ❤️ 1
    你那是没见过 npm 动不动装上百个包的
    EagleB
        52
    EagleB  
       2017-11-16 00:20:09 +08:00 via iPhone
    kran
        53
    kran  
       2017-11-16 00:30:49 +08:00 via iPhone
    其实本身就没有区别,那些框架提供的解决方案你可以不用嘛。
    之前的一个项目,只用 jre 的 HttpServer,没有依赖,配置只是一个 json,如果你选择,完全可以很简单不是吗?
    jimisun
        54
    jimisun  
       2017-11-16 04:47:30 +08:00 via Android
    想哭了………这个点
    yaoliyc
        55
    yaoliyc  
       2017-11-16 07:51:20 +08:00 via iPhone
    @owenliang 所谓的面向对象或面向接口编程就是要求了解结果就行,不需要了解做了什么怎么做的。
    notreami
        56
    notreami  
       2017-11-16 09:15:52 +08:00
    就连 PHP,都有一大堆包和配置,那种靠前排名的 lib 和 conf 少呢?
    ren2881971
        57
    ren2881971  
       2017-11-16 09:18:45 +08:00
    怎么每天都有人来黑 java 一下。。哭了 。
    wuethan
        58
    wuethan  
       2017-11-16 09:44:04 +08:00
    .net 创业市场大,java 给人打工一辈子
    swim2sun
        59
    swim2sun  
       2017-11-16 09:50:04 +08:00
    程序最核心的还是对业务的抽象,就算你只用 servlet/filter 也是完全可以的,Java Web 给的选择是很多的。

    一上来就用 ssh 那一套肯定会懵逼,但是脱离这些还是可以写出 web 程序的,既然选择了使用框架,就不要吐槽配置多,这就是“框架”和“库”的区别。“库”是你告诉它要怎么做,“框架”是它告诉你要怎么做
    Tenma
        60
    Tenma  
       2017-11-16 09:51:29 +08:00
    @ren2881971 朋友,有的黑就说明生命力还强着呢,假如完全没有话题性的语言基本就已经被历史抛弃了……( PS:Android 开发)
    xxdd
        61
    xxdd  
       2017-11-16 09:57:50 +08:00
    @CtrlSpace 以后卖书记得 at 我 哈哈哈
    wangxiaoer
        62
    wangxiaoer  
       2017-11-16 10:02:19 +08:00
    @owenliang 要说重框架轻原理,当初的 asp webform 还是按照桌面交互方式做 web 开发呢,多少半吊子程序员连 get post 都分不清………… java web 那一套搞下来起码我觉得一些基础概念是逼着你掌握的
    ZiLong
        63
    ZiLong  
       2017-11-16 10:26:44 +08:00
    @CtrlSpace 我一直在等特种兵的下册
    qq292382270
        64
    qq292382270  
       2017-11-16 10:34:47 +08:00
    一切为了生存 ...
    asuraa
        65
    asuraa  
       2017-11-16 10:35:29 +08:00
    misaka19000
        66
    misaka19000  
       2017-11-16 10:35:48 +08:00
    哎,感觉 V 站最近这种垃圾帖子越来越多了
    TZ
        67
    TZ  
       2017-11-16 10:40:46 +08:00
    直接搬砖的水准是啥意思
    pqee
        68
    pqee  
       2017-11-16 10:58:57 +08:00
    在 Spring Boot 里写了几个网页我已经快吐血身亡了
    linus3389
        69
    linus3389  
       2017-11-16 11:17:51 +08:00
    node_modules
    x7395759
        70
    x7395759  
       2017-11-16 11:44:16 +08:00
    lib 和 conf 也就码农水平啦哈哈哈哈哈
    ren2881971
        71
    ren2881971  
       2017-11-16 12:18:59 +08:00
    @pqee spingboot 那玩意还是适合做 api 服务
    lfmy
        72
    lfmy  
       2017-11-16 14:43:35 +08:00
    c++码农飘过,个人比较喜欢学习和是使用各种工具和库、框架这种开发方式,并乐此不疲,并不喜欢自己造轮子( ̄▽ ̄)~*
    njwangchuan
        73
    njwangchuan  
       2017-11-16 15:03:36 +08:00   ❤️ 1
    Java 那是工作中专用语言,一般都用在需求严谨、人员充足、周期较长得项目中。公司给政府和企事业单位做得项目大多属于这种。

    招人角度,大学和培训机构都开设 Java 课程,无论是招人还是找工作。北上广,你可以招 nodejs,招 laravel,招 python,招 react。二线以后城市,你想招程序员,基本就只能是 java,iOS / Android 这种 JD。

    我本人 java 出身,除了刚毕业那一两年,现在折腾自己得项目,无论 web、移动端、数据采集、API 接口、数据分析,早就没有 java 位置了。等你 java 把框架磨合出来得时间,其他技术栈功能都写完了。。
    lzhCoooder
        74
    lzhCoooder  
       2017-11-16 15:04:22 +08:00
    真心佩服 C 程序员,完全没什么 lib 可以用,只能默默撸,学的时候感觉语法超级简单,用起来全是坑,可以称为使用曲线陡峭。
    hhh 反方向娱乐一下
    kenshinji
        75
    kenshinji  
       2017-11-16 16:38:57 +08:00 via iPhone
    @CtrlSpace 最后那张图真是高级黑
    kylaCpp
        76
    kylaCpp  
       2017-11-16 16:49:45 +08:00
    一个项目的好坏主要取决于架构的灵活
    而不是语言
    windyboy
        77
    windyboy  
       2017-11-16 16:51:41 +08:00
    java 很多轻量的做法

    sparkjava
    ratpack
    vert.x

    简单干净
    spring 依赖确实很多,即便是 spring boot
    hantsy
        78
    hantsy  
       2017-11-17 08:07:32 +08:00
    要依赖少,回传统 JavaEE 吧,一个应用下来可能几十 K 的一个 war 就行了,尽量全部使用标准,应用服务器自带规范实现,不用把这些标准实现依赖进行打包。

    用 Spring Boot 少则 50M,依赖多一点 100M 也不奇怪。
    hantsy
        79
    hantsy  
       2017-11-17 08:09:33 +08:00
    hantsy
        80
    hantsy  
       2017-11-17 08:12:29 +08:00
    像我 Github 上例子,https://github.com/hantsy/ee8-sandbox Hello World 级别,打包出来都是几 K 到十几 K。

    同样 Hello World 级别的用 Spring Boot 的例子,https://github.com/hantsy/spring-reactive-sample,打包出来差不多都在几十 M。
    hantsy
        81
    hantsy  
       2017-11-17 08:34:01 +08:00
    实话说,单纯的比较这些包的大小,依赖,对开发没任何意义。

    Java 开源生态环境是其他语言不能相比的,不管解决哪个方面的问题,都有找到一系列开源方案。

    配置方面不管 Spring Boot 还是其他(本来 Java EE 8 中有配置相关标准,后来取消了,但 Eclipse Microprofile 规范加入相关标准,Apache Deltaspike 项目也提供了灵活的配置方案),在 Java 中配置是相当灵活,不管是编译时配置( Maven Profile ),还是运行时配置( Spring @Profile )基本都是可以考虑到 SDLC (开发,集成 /测试,生产环境),可以很简单应用到不同环境。

    其他语言(我也有过 PHP,NodeJS 经验)似乎没这么方便。PHP PSR 在模仿 JSR 机制开始定制了一系列规范。

    Java 的规范,套路( Design Pattern )等,看起来都是低效,笨拙,。。但它非常适用于团队开发大型应用,非常适合长期维护的项目。

    曾经与一个几年经验的 .net 程序员接触,他的印象,怎么一个简单的功能一到 Java 为什么要那么多第三依赖库。我不明白的是,他作为一个 .net 程序员,现在 .net 也那么开放,他天天用到的只有 VS。工作中,很多的第三方库可以简化操作,更实现一些通用功能。比如,.net 也有一些优秀 jwt/oauth 认证开源项目,奇怪的他对于第三库一概不知,一概不用。
    tcpdump
        82
    tcpdump  
       2017-11-17 09:54:55 +08:00
    @hantsy 是的,生态很大,新入门配个 maven, xml 那些,还有环境,都可以搞几天了。
    misaka20
        83
    misaka20  
       2017-11-19 11:38:56 +08:00 via iPhone
    test
    cuiswing
        84
    cuiswing  
       2017-11-22 22:56:15 +08:00
    @CtrlSpace CRUD 你太搞了
    johnniang
        85
    johnniang  
       2017-11-29 09:23:44 +08:00 via Android
    Java 的设计模式很重要,如果能完全掌握二十多种设计模式,也就能写出很优雅的代码,复用性很强的代码,我想这就是我们程序员所要追求的吧,不管是什么语言
    abcbuzhiming
        86
    abcbuzhiming  
       2017-12-01 10:25:02 +08:00   ❤️ 1
    @johnniang 这句话我非常强烈的反对,我恰恰认为 java 在大多数时候,要避免谈 xx 设计模式,因为绝大部分人的 java 项目根本就不大,开始就谈什么复用,很容易陷入过度设计的泥坑里,几年前 java 被批判就是因为这个,后来诞生了一大批轻量级框架都在降低设计的复杂度。而且。我真心不觉得基于 Simula67 学派的面向对象体系谈的上优雅,基于这种思想搞出来的,稍微大一点的项目,没有 uml 类图做指导,压根就看不懂他们写的东西。代码这东西,可阅读性应放在第一位,因为代码是一次编写,多次阅读的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1011 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 19:45 · PVG 03:45 · LAX 11:45 · JFK 14:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.