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

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

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

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

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

    2.定义屌丝程序员

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

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

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

    倒是说说怎么开发啊 @necpowman
        66
    TakWolf   2016-09-15 16:46:26 +08:00
    1. Intellij IDEA
    2. Spring Boot
        67
    xgfan   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";
    }
    }

    ```
        68
    gowk   2016-09-15 20:37:16 +08:00
    @WhatIf 感谢您的回复,深知我心
        69
    gowk   2016-09-15 20:40:42 +08:00
    @eightqueen 哈哈哈哈,我就是根据你这个 Repository 修改来的。。。
        70
    murmur   2016-09-15 20:44:26 +08:00   ♥ 1
    @hooluupog xml 有个最大的优点是原语直接校验 你在写配置的时候 IDE 就告诉你不合法 这是 json 做不到的
    对于无比复杂的企业开发这能填平不少坑
        71
    murmur   2016-09-15 20:48:28 +08:00
    @Pastsong
    (1)真正排版的时候 xml 反倒比 json 灵活 因为有 IDE 补全 比如我在书写 mybatis 复杂 sql 的时候,转一个尖括号就可以了,各种换行排版都不惧,但是 json 单一个回车就不合法
    (2)scheme 校验,企业开发必备, java 一个语言可以扛起各种东西,除了你知道的,还有数据挖掘、倒排索引、工作流、数据总线、服务总线这些乱七八糟你不知道的,这堆东西放一起总归要配置的吧, xml 只要一校验就知道你配置合法不合法, json 或者 yaml 的话,打错个单词?呵呵你自己慢慢找吧
        72
    neoblackcap   2016-09-15 21:16:29 +08:00 via iPhone
    @incompatible json schema
        73
    jinsongzhao   2016-09-15 21:39:05 +08:00 via Android
    写程序需要爱折腾,组装,调试,极致,洁癖这和性格有关,但是专注业务逻辑也不错。事情总没法完美,慢慢来吧。
        74
    skydiver   2016-09-15 22:01:43 +08:00 via iPad
    会了不难,难了不会
        75
    incompatible   2016-09-15 22:04:03 +08:00
    @neoblackcap json schema 还只是个草案而已。
        76
    gowk   2016-09-16 08:19:24 +08:00 via Android
    @WhatIf 只是很好奇,如果 xml 从来都不改的话,我们为什么要用 Spring
        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 的好处是集中式的,缺点是繁杂+没有非常好的重构工具(重构包括代码的静态查阅),需要自己寻求一个平衡点
        78
    mikulch   2016-09-16 12:28:51 +08:00
    Spring Data JPA 太恶心了。真的。太恶心了。
    还有人用 Spring data jpa 来操作 redis 什么的数据库。这些人疯了吗!?
        79
    eightqueen   2016-09-16 12:42:42 +08:00
    @gowk 我这个项目绝对能跑
        80
    gowk   2016-09-16 19:37:50 +08:00
    @eightqueen 可以跑起来,没问题。 JSTL 核心标签可以用吗
        81
    gowk   2016-09-16 19:38:39 +08:00
    @mikulch 至少 CRUD 语句不用写了。。
        82
    eightqueen   2016-09-16 21:17:07 +08:00
    @gowk 网页开发这块我搞得其实不错,只是写了个 IndexController 。
        83
    wangxiaoer   2016-09-16 21:25:03 +08:00
    你说的那一大堆库 框架 一个 maven 不就全搞定了?再配个 IDEA 还要啥自行车啊
        84
    eightqueen   2016-09-16 21:25:39 +08:00
    @eightqueen 说错了,搞得不多。
        85
    tedzhou1221   2016-09-17 08:30:29 +08:00 via iPhone
    XML---解藕,集中管理!

    早点投入到 idea 的怀抱,至少能让你少犯一些低级错误
        86
    ybark   2017-09-17 18:00:48 +08:00
    确实很恶心,即使是 spring boot,尽力减少 xml 配置(转而写 property 或 yaml 配置),并倡导约定优先于配置。可是还有一大堆注解,靠最头疼的就是这种东西,脱离程序思路的语法糖,吃多了也不怕糖尿病。
    相比之下,python 清爽很多,最多就是有个修饰器,至少是可以在 1 天内搞懂原理的。
        87
    jack80342   2017-11-28 23:11:21 +08:00
    这几天翻译了 Spring Boot 最新的官方文档,欢迎 Fork,https://www.gitbook.com/book/jack80342/spring-boot/details
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3395 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 35ms · UTC 05:03 · PVG 13:03 · LAX 21:03 · JFK 00:03
    ♥ Do have faith in what you're doing.