为什么配置个舒心的 Java 开发环境这么难? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
gowk
V2EX    程序员

为什么配置个舒心的 Java 开发环境这么难?

  •  
  •   gowk
    qinjinling 2016-09-14 16:53:43 +08:00 via Android 10440 次点击
    这是一个创建于 3315 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Eclipse, Maven, Jetty, Spring, Spring Data JPA
    就是想不用 xml 配置,不需要 web.xml ,用 Java 类配置把这些环境搭起来,鼓捣了两天,终于可以了,读写 mysql ,简单页面展示都没问题,可是 JSP 的标准 JSTL 标签用不了。查了一下, Jetty 在 Eclipse 中分嵌入和不嵌入的,嵌入的可以像 Springside 那样,但按照 Springside 的 QuickStart 例子做了, Spring 环境又起不来,因为我的项目不是基于 xml 配置的 Spring 。研究了一天问题在那,又是研究 Maven 的 Jetty 插件,又是研究 Servlet/JSP 和 Jetty 版本的对应关系,又是研究 Spring Java 类配置文件是不是漏了什么东西,各种心累,我就是想专注业务,写各种漂亮的代码,但是被开发环境折腾的一点兴致都没了,心情很糟,想骂人。我想抛弃那些项目组陈旧的 Java 环境,引入 Maven (目前项目组没有是使用 Maven ),引入最新的框架,舒心的写 Java 代码,但是结果让我很失望,各种对象,各种配置已经把我弄的头昏脑涨,快要撕裂。以后也就工作用用 Java ,空闲时间绝不折腾了!把精力集中在 Go 上吧,那才是编程的未来。

    各位Javaer能说说你们现在用的Java开发环境吗?都用了哪些框架?
    第 1 条附言    2016-09-19 10:03:01 +08:00

    因为代码里一个愚蠢的错误,导致 JSTL forEach 标签没有显示内容,并不是不能用。。。还是自己粗心造成的,不能怪Java。 感觉 Java Config 配置比 XML 配置还是优越,方便重构,感谢 @eightqueen 的 开源项目winter

    忙过这段时间,学习一下 Spring Boot,根据最新调研结果,Spring Boot 正在变得流行。

    87 条回复    2017-11-28 23:11:21 +08:00
    Lonely
        1
    Lonely  
       2016-09-14 17:02:12 +08:00 via iPhone
    说的好像 go 就不折腾一样
    gowk
        2
    gowk  
    OP
       2016-09-14 17:03:31 +08:00 via Android
    @Lonely 都折腾,所以觉得心累。。。累。。。
    palmers
        3
    palmers  
       2016-09-14 17:04:54 +08:00
    eclipse 对我来说肯定舒心不了
    Nexvar
        4
    Nexvar  
       2016-09-14 17:06:12 +08:00 via Android
    上 docker
    gowk
        5
    gowk  
    OP
       2016-09-14 17:09:23 +08:00 via Android
    @palmers 用 IDEA 就舒心了。。?
    gowk
        6
    gowk  
    OP
       2016-09-14 17:09:47 +08:00 via Android
    @Nexvar 开发环境。。跟 docker 没关系。。
    zhuangzhuang1988
        7
    zhuangzhuang1988  
       2016-09-14 17:10:22 +08:00   2
    基础不牢...
    jyyyxy
        8
    jyyyxy  
       2016-09-14 17:12:19 +08:00
    上 springboot ,各种自动配置,看上去干净很多
    gowk
        9
    gowk  
    OP
       2016-09-14 17:13:30 +08:00 via Android
    @zhuangzhuang1988 所以还得继续折腾!
    geekaven
        10
    geekaven  
       2016-09-14 17:13:31 +08:00
    用 spring boot 吧
    UG1u8zhQxhvqXNrk
        11
    UG1u8zhQxhvqXNrk  
       2016-09-14 17:15:09 +08:00
    spring boot +1
    gowk
        12
    gowk  
    OP
       2016-09-14 17:15:10 +08:00 via Android
    @jyyyxy 等放假回来折腾折腾 Spring Boot...
    gowk
        13
    gowk  
    OP
       2016-09-14 17:16:11 +08:00 via Android
    看大家都在推荐 Spring Boot ,你们都在用吗?
    luban
        14
    luban  
       2016-09-14 17:17:42 +08:00
    我觉得 xml 也还好,反正就是配置一次的事,而且出问题还好找
    Ouyangan
        15
    Ouyangan  
       2016-09-14 17:24:15 +08:00
    java 是挺烦人
    xiaolanglang
        16
    xiaolanglang  
       2016-09-14 17:26:25 +08:00
    @gowk spring boot 我在用,可以不写 XML 了,几乎所有的东西都是一个注解搞定,只需要配置一些类似于 mysql 链接地址, redis 链接地址之类的东西……
    Presageee
        17
    Presageee  
       2016-09-14 17:27:30 +08:00
    用 play 吧 Java/scala 都能写
    Ouyangan
        18
    Ouyangan  
       2016-09-14 17:29:19 +08:00
    @gy911201 都是看团队吧 , xml 都是为了解耦,改配置不用重新发个包
    stackboom
        19
    stackboom  
       2016-09-14 17:30:08 +08:00
    gowk
        20
    gowk  
    OP
       2016-09-14 17:40:15 +08:00 via Android
    @luban 也不能否定 xml 配置,和 Java Config 结合挺好,不过也许没人这么折腾
    S1ahs3r
        21
    S1ahs3r  
       2016-09-14 17:40:39 +08:00
    spring bppt + docker 不依赖公司任何东西的开发环境几秒钟就备好...
    S1ahs3r
        22
    S1ahs3r  
       2016-09-14 17:41:10 +08:00
    @S1ahs3r 我的天...我的错别字
    gowk
        23
    gowk  
    OP
       2016-09-14 17:41:59 +08:00 via Android
    @stackboom .Net 不是说不好,我以前就是做.Net 。但有些地方还是比不上 Java ,不服不行
    ming2050
        24
    ming2050  
       2016-09-14 17:43:37 +08:00
    Intellij IDEA + Spring Boot 欢迎你
    wupher
        25
    wupher  
       2016-09-14 17:44:08 +08:00
    SPringBoot + idea
    gowk
        26
    gowk  
    OP
       2016-09-14 17:44:23 +08:00 via Android
    @S1ahs3r 期待你分享一下经验,让像我这样的丝 Javaer 长长见识
    necpowman
        27
    necpowman  
       2016-09-14 18:02:57 +08:00
    @gowk “开发环境和 docker 没关系”。。。楼主真是“丝 Javaer ”啊。。。
    palmers
        28
    palmers  
       2016-09-14 18:41:47 +08:00
    @gowk 是的 ,我用 idea 确实比较舒心,目前还没有添堵的时候
    xjp
        29
    xjp  
       2016-09-14 18:47:00 +08:00
    同觉得 java 配置屎 各种 xml
    最后用了 jetty+idea+springMVC 稍微好了一点 不过仍然各种 xml
    incompatible
        30
    incompatible  
       2016-09-14 18:47:20 +08:00
    @necpowman 你倒是说说开发环境跟 docker 有什么关系? 以及如何定义“丝 Javaer ”?
    shijingshijing
        31
    shijingshijing  
       2016-09-14 18:48:15 +08:00
    @gowk 我说楼主,整完这一套不再来整一套 Android Studio 合适么?是 Javaer 就要 J2EE , JSP , Android 一样都不落下。
    why1
        32
    why1  
       2016-09-14 19:31:38 +08:00 via Android
    这是 IT 部门的事,你是程序员呀
    ArthurTsang
        33
    ArthurTsang  
       2016-09-14 20:10:13 +08:00 via Android
    XML 其实很好用
    gowk
        34
    gowk  
    OP
       2016-09-14 21:52:55 +08:00 via Android
    @why1 ...我觉得这是程序员的事...
    zhuangzhuang1988
        35
    zhuangzhuang1988  
       2016-09-14 22:04:45 +08:00
    @ArthurTsang 对的, 有 IDE 支持写起来,很快,而且无错误。。
    ilaipi
        36
    ilaipi  
       2016-09-14 22:08:13 +08:00   1
    既然想专注于代码,何不花最少的精力,用最容易的 xml 方式把 spring 全部配置好?
    你现在这样倒是把精力都花在环境上了
    个人见解
    BrightDawn
        37
    BrightDawn  
       2016-09-14 22:15:07 +08:00 via Android
    吐槽半天还是得配好,自己配不好不如看看别人怎么配的。
    kaneg
        38
    kaneg  
       2016-09-14 22:48:00 +08:00 via iPhone
    不折腾,不软件
    gowk
        39
    gowk  
    OP
       2016-09-14 22:54:11 +08:00 via Android
    @ilaipi 感谢你的建议,还是回归 xml 吧!
    6IbA2bj5ip3tK49j
        40
    6IbA2bj5ip3tK49j  
       2016-09-14 23:12:44 +08:00
    想简单
    Spring Boot + Java 8 (或者 kotlin)
    zonghua
        41
    zonghua  
       2016-09-14 23:29:04 +08:00
    C++ 得不是更痛苦?如果依赖各种库得话
    qinxi
        42
    qinxi  
       2016-09-15 00:07:53 +08:00
    spring boot gradle 只需要 jdk 环境就能编译
    kingcos
        43
    kingcos  
       2016-09-15 00:13:43 +08:00 via iPhone
    一直不了解 docker ……

    看来要了解了解
    necpowman
        44
    necpowman  
       2016-09-15 06:22:00 +08:00
    @incompatible
    1.docker 实现了开发,测试,生产的环境统一

    用 docker 启一个本地开发环境时间远小于编译或安装包安装各个软件然后配置

    2.定义丝程序员

    大家都是丝包括我。不过你更丝的原因是,你对不了解的事物缺乏敬畏。

    (blocked)
    unionx
        45
    unionx  
       2016-09-15 06:24:15 +08:00 via iPad
    楼主还是新手吧
    freezhan
        46
    freezhan  
       2016-09-15 08:23:41 +08:00
    Intellij IDEA + Spring Boot + Gradle + Java8
    okampfer
        47
    okampfer  
       2016-09-15 08:34:32 +08:00   1
    WhatIf
        48
    WhatIf  
       2016-09-15 09:26:36 +08:00   1
    看内容, 第一反应就是 Spring Boot 然后看到果然好多人在推荐, 然而自己就是不想用这玩意,哈哈蛤。
    其实根源还是在于楼主对消灭 xml 的执着追求,心平气和地想一想,有 xml 又如何? 那些对减少 xml 的努力,源于配置满天飞的窘境,而不是彻底消灭。如果建项目时候只是需要拷贝数个 xml ,然后从来都不去修改的话, 楼主是否依然对此介意?
    人都可以有自己的追求,自己的洁癖,本意是让自己不那么累,只要别舍近求远就好了。
    wemore
        49
    wemore  
       2016-09-15 09:34:17 +08:00 via Android
    小白想问一下。 xml 的意义是什么?可以用来解耦吗? xml 不就是把要写到程序里的东西放外面了嘛,但用注解不就又写回程序里面了吗?
    bk201
        50
    bk201  
       2016-09-15 10:11:51 +08:00 via iPhone
    java 配置是很麻烦,个人项目 java 不太适合
    misaka19000
        51
    misaka19000  
       2016-09-15 10:14:44 +08:00
    @WhatIf 同感,感觉他们陷入了一种怪圈,却没有意识到刻意的去消除 XML 本来就是不需要的,因为配置文件这种东西本来也就不需要频繁修的
    keepcleargas
        52
    keepcleargas  
       2016-09-15 10:17:57 +08:00
    Java 配置是挺蛋疼了 ,习惯了就好!
    FrankFang128
        53
    FrankFang128  
       2016-09-15 10:27:12 +08:00
    XML 好用?哈哈哈哈
    eightqueen
        54
    eightqueen  
       2016-09-15 12:41:24 +08:00
    https://github.com/randy1900/winter
    这是我开源的一个项目,教你如何配置 java 工程。
    incompatible
        55
    incompatible  
       2016-09-15 13:17:03 +08:00
    @necpowman 请不要在这里混淆视听了。楼主问的是 java 开发环境如何配置(事实上他想问的基于 spring 的 web 工程的配置),你在这里扯什么“开发,测试,生产的环境统一”,根本是两码事好吗?

    我向你提问并不代表我不了解你所说的东西,我只是不赞同你的观点并期待你能给出一个可以说服我的答案。
    然而你这样一个连 mongo 同步 es 都搞不定的弱鸡,也只能使用 blocked 这种方式做出最无力的回答了。
    sorra
        56
    sorra  
       2016-09-15 13:33:00 +08:00
    @wemore 在 EJB 时代是一切复杂的东西不管你需不需要都给你堆一起,后来有人发现只需要一部分东西,就做了轻量级的 Spring ,仍需要 XML ,后来 Java 有了注解特性,有人发现大多数时候有注解就够了。另外,这段发展历程的背景是从企业应用走向互联网应用。
    sutra
        57
    sutra  
       2016-09-15 13:52:37 +08:00
    springboot 可以帮你去掉 xml 。
    Pastsong
        58
    Pastsong  
       2016-09-15 13:55:56 +08:00 via Android
    Java 界似乎很热衷于 xml 配置文件格式, yaml 和 json 不是更简洁吗?
    hooluupog
        59
    hooluupog  
       2016-09-15 14:18:03 +08:00
    java 之所以烦人, xml 功不可没。
    incompatible
        60
    incompatible  
       2016-09-15 14:18:43 +08:00
    @Pastsong xml 支持 schema , IDE 可以基于 schema 进行自动提示或校验,这是 xml 相对 yaml 或 json 的优势。不过 spring-boot 现在也支持 yaml 了。
    VictoryMiKi
        61
    VictoryMiKi  
       2016-09-15 14:39:39 +08:00
    项目使用 idea+maven+springMVC+jetty 用起来简直不要太爽
    plqws
        62
    plqws  
       2016-09-15 14:51:47 +08:00
    Java 已经很舒心了,相比那些脚本语言和那些长得和脚本语言一样的 Native 语言。
    lynx
        63
    lynx  
       2016-09-15 15:04:41 +08:00
    ```python
    from flask import Flask
    app = Flask(__name__)

    @app.route("/")
    def hello():
    return "Hello World!"

    if __name__ == "__main__":
    app.run()
    ```
    DRcoding
        64
    DRcoding  
       2016-09-15 15:41:25 +08:00
    看样子应该是新手吧,说的好像 maven 不用配置一样.....
    limbo0
        65
    limbo0  
       2016-09-15 16:27:47 +08:00
    还真没看见过用 docker 开发, 都是用 docker 部署

    倒是说说怎么开发啊 @necpowman
    TakWolf
        66
    TakWolf  
       2016-09-15 16:46:26 +08:00
    1. Intellij IDEA
    2. Spring Boot
    6IbA2bj5ip3tK49j
        67
    6IbA2bj5ip3tK49j  
       2016-09-15 18:48:19 +08:00
    @lynx
    ```Java
    @RestController
    @SpringBootApplication
    public class DemoApplication {

    public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
    }

    @GetMapping("index")
    public String index() {
    return "hello word";
    }
    }

    ```
    gowk
        68
    gowk  
    OP
       2016-09-15 20:37:16 +08:00
    @WhatIf 感谢您的回复,深知我心
    gowk
        69
    gowk  
    OP
       2016-09-15 20:40:42 +08:00
    @eightqueen 哈哈哈哈,我就是根据你这个 Repository 修改来的。。。
    murmur
        70
    murmur  
       2016-09-15 20:44:26 +08:00   1
    @hooluupog xml 有个最大的优点是原语直接校验 你在写配置的时候 IDE 就告诉你不合法 这是 json 做不到的
    对于无比复杂的企业开发这能填平不少坑
    murmur
        71
    murmur  
       2016-09-15 20:48:28 +08:00
    @Pastsong
    (1)真正排版的时候 xml 反倒比 json 灵活 因为有 IDE 补全 比如我在书写 mybatis 复杂 sql 的时候,转一个尖括号就可以了,各种换行排版都不惧,但是 json 单一个回车就不合法
    (2)scheme 校验,企业开发必备, java 一个语言可以扛起各种东西,除了你知道的,还有数据挖掘、倒排索引、工作流、数据总线、服务总线这些乱七八糟你不知道的,这堆东西放一起总归要配置的吧, xml 只要一校验就知道你配置合法不合法, json 或者 yaml 的话,打错个单词?呵呵你自己慢慢找吧
    neoblackcap
        72
    neoblackcap  
       2016-09-15 21:16:29 +08:00 via iPhone
    @incompatible json schema
    jinsongzhao
        73
    jinsongzhao  
       2016-09-15 21:39:05 +08:00 via Android
    写程序需要爱折腾,组装,调试,极致,洁癖这和性格有关,但是专注业务逻辑也不错。事情总没法完美,慢慢来吧。
    skydiver
        74
    skydiver  
       2016-09-15 22:01:43 +08:00 via iPad
    会了不难,难了不会
    incompatible
        75
    incompatible  
       2016-09-15 22:04:03 +08:00
    @neoblackcap json schema 还只是个草案而已。
    gowk
        76
    gowk  
    OP
       2016-09-16 08:19:24 +08:00 via Android
    @WhatIf 只是很好奇,如果 xml 从来都不改的话,我们为什么要用 Spring
    WhatIf
        77
    WhatIf  
       2016-09-16 11:35:28 +08:00
    @gowk 对于大多数情况来说 其实需要的配置真心不多。我现在项目的情况 ,留给配置的有:数据库配置, MQ 配置,目录配置。 而其它情况,能用声明就用声明的方式了。
    用 spring ,因为方便,因为它对大量工具的抽象。比如说 MQ 的处理, 比直接写 jms 的 api 方便多了。无论是代码简约程度还是从通用性来考量。
    以前,连 ioc 都只能用 xml 来配置(虽然可以用 autowired by name/class 的方式,但是也不那么方便),的确很恼人。多数情况都是一对一明确的注入(可以说一个项目 99%的都是),这一点就好像面向接口的方式,好处大家都懂,但是有必要每个都来接口吗?

    我现在的选择是先弄清楚什么是属于系统配置(这部分少之又少),要放到配置文件的,其余的能用声明就用声明,当然如果写声明麻烦的情况 我宁可写 xml 。

    xml 的好处是集中式的,缺点是繁杂+没有非常好的重构工具(重构包括代码的静态查阅),需要自己寻求一个平衡点
    mikulch
        78
    mikulch  
       2016-09-16 12:28:51 +08:00
    Spring Data JPA 太恶心了。真的。太恶心了。
    还有人用 Spring data jpa 来操作 redis 什么的数据库。这些人疯了吗!?
    eightqueen
        79
    eightqueen  
       2016-09-16 12:42:42 +08:00
    @gowk 我这个项目绝对能跑
    gowk
        80
    gowk  
    OP
       2016-09-16 19:37:50 +08:00
    @eightqueen 可以跑起来,没问题。 JSTL 核心标签可以用吗
    gowk
        81
    gowk  
    OP
       2016-09-16 19:38:39 +08:00
    @mikulch 至少 CRUD 语句不用写了。。
    eightqueen
        82
    eightqueen  
       2016-09-16 21:17:07 +08:00
    @gowk 网页开发这块我搞得其实不错,只是写了个 IndexController 。
    wangxiaoer
        83
    wangxiaoer  
       2016-09-16 21:25:03 +08:00
    你说的那一大堆库 框架 一个 maven 不就全搞定了?再配个 IDEA 还要啥自行车啊
    eightqueen
        84
    eightqueen  
       2016-09-16 21:25:39 +08:00
    @eightqueen 说错了,搞得不多。
    tedzhou1221
        85
    tedzhou1221  
       2016-09-17 08:30:29 +08:00 via iPhone
    XML---解藕,集中管理!

    早点投入到 idea 的怀抱,至少能让你少犯一些低级错误
    ybark
        86
    ybark  
       2017-09-17 18:00:48 +08:00
    确实很恶心,即使是 spring boot,尽力减少 xml 配置(转而写 property 或 yaml 配置),并倡导约定优先于配置。可是还有一大堆注解,靠最头疼的就是这种东西,脱离程序思路的语法糖,吃多了也不怕糖尿病。
    相比之下,python 清爽很多,最多就是有个修饰器,至少是可以在 1 天内搞懂原理的。
    jack80342
        87
    jack80342  
       2017-11-28 23:11:21 +08:00
    这几天翻译了 Spring Boot 最新的官方文档,欢迎 Fork,https://www.gitbook.com/book/jack80342/spring-boot/details
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2688 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 10:01 PVG 18:01 LAX 03:01 JFK 06:01
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86