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

灵魂拷问之是否适合 Java 开发

  •  
  •   fxjson · 2021-03-24 21:10:50 +08:00 via Android · 8444 次点击
    这是一个创建于 1369 天前的主题,其中的信息可能已经有所发展或是发生改变。
    写习惯了 php,go 这种轻量级语言,代码一运行就跑起来了,即使有错误也很容易定位错误位置,多次尝试搞 java,真的要吐了,不说 ssm 搭建,就用 springboot,下载依赖的 jar 包要好长时间,然后配置 mybatis,写个 service+mapper,都恶心到我了,不知道是不是自己本心的抵触,反正怎么写怎么不开心,怀疑自己是不是不适合搞 java
    72 条回复    2021-03-27 20:21:47 +08:00
    ihgoo
        1
    ihgoo  
       2021-03-24 21:16:03 +08:00
    搞 java 就要时间的沉淀
    vitoliu
        2
    vitoliu  
       2021-03-24 21:16:06 +08:00
    那就是不适合呀。
    不过很好找工作就行了吧,不是吗?
    iConnect
        3
    iConnect  
       2021-03-24 21:16:27 +08:00 via Android
    PHP 和 go 都能用,基本上都能搞了,没必要 JAVA 呀。什么特殊情况,一定要 JAVA 才行?
    fxjson
        4
    fxjson  
    OP
       2021-03-24 21:18:27 +08:00 via Android
    @iConnect 对编程语言有兴趣,并且 java 感觉工程化很厉害
    lasfresas
        5
    lasfresas  
       2021-03-24 21:22:53 +08:00 via Android
    一样,java 搞不来
    yeqizhang
        6
    yeqizhang  
       2021-03-24 21:26:14 +08:00 via Android   ❤️ 3
    上次我编译 go 的项目下载 github 依赖包也很恶心啊
    mango88
        7
    mango88  
       2021-03-24 21:33:41 +08:00
    哈哈哈哈,我刚好反过来,我一个搞 Java,觉得 PHP 很难搞
    zjsxwc
        8
    zjsxwc  
       2021-03-24 21:37:06 +08:00 via Android
    用 kotlin 啊,
    安卓开发、写 springboot 用 kotlin 很爽的
    Cbdy
        9
    Cbdy  
       2021-03-24 21:37:06 +08:00 via Android
    学 Java 方法比较重要
    fxjson
        10
    fxjson  
    OP
       2021-03-24 21:39:22 +08:00 via Android
    @zjsxwc 后端用 kotlin 的不多
    diggzhang
        11
    diggzhang  
       2021-03-24 21:40:19 +08:00
    BO DTO VO PO..
    ila
        12
    ila  
       2021-03-24 21:42:56 +08:00 via Android
    @Cbdy 能否说说。
    我最近看到面向对象这里,直接懵了。
    例如 override 和 overload 为什么会存在
    luckylo
        13
    luckylo  
       2021-03-24 21:44:44 +08:00 via Android
    @iConnect 大数据你抛开 java.生态试试看?手动狗头
    LowBi
        14
    LowBi  
       2021-03-24 22:12:01 +08:00 via Android
    确实挺繁琐的
    touchwithe
        15
    touchwithe  
       2021-03-24 22:15:27 +08:00 via iPhone
    我写 python 的最近转 go 都难受哈哈
    qwerthhusn
        16
    qwerthhusn  
       2021-03-24 22:18:33 +08:00   ❤️ 2
    搞 Java 的看着 GO 挺难受
    xcstream
        17
    xcstream  
       2021-03-24 22:28:31 +08:00
    确实难受
    xarthur
        18
    xarthur  
       2021-03-24 22:36:47 +08:00 via iPhone
    你居然能忍受 Go 的包管理忍不了 java 的……
    xarthur
        19
    xarthur  
       2021-03-24 22:37:51 +08:00 via iPhone
    顺便一提 Go 比 Java 简单多了(
    xsliang
        20
    xsliang  
       2021-03-24 22:39:40 +08:00
    我一个在 vs 下些了 10 年 c#的 还是转 java 了
    securityCoding
        21
    securityCoding  
       2021-03-24 23:02:45 +08:00 via Android
    go 泛型出来后可以考虑用来写业务代码
    zxCoder
        22
    zxCoder  
       2021-03-24 23:37:04 +08:00
    习惯问题吧
    我是无法忍受 go 这种一身缺点的语言的。。。。php 倒是没写过
    EminemW
        23
    EminemW  
       2021-03-24 23:59:12 +08:00   ❤️ 1
    下包慢是因为你没配镜像仓库。你下 golang 的包难道不配 goproxy 么
    jizhihaoSAMA
        24
    jizhihaoSAMA  
       2021-03-25 00:08:27 +08:00
    +1,之前看视频学的时候写 XML 写吐了
    charlie21
        25
    charlie21  
       2021-03-25 01:00:14 +08:00 via iPhone
    php symphony laravel 什么的也是蛮重阿
    Joker123456789
        26
    Joker123456789  
       2021-03-25 02:16:39 +08:00
    不要把 spring 的锅 怪到 java 头上, 你想随便写写,不用框架,那么可以选择 servlet+jdbc 。 或者看看这个框架: http://mars-framework.com
    fiypig
        27
    fiypig  
       2021-03-25 06:40:15 +08:00 via iPhone
    我觉得要慢慢习惯,我应该刚开始跟你一样想法,后面觉得 spring boot 有点强
    Cbdy
        28
    Cbdy  
       2021-03-25 07:51:41 +08:00 via Android
    @ila 这个是 C++那儿学来的,建议看看对于 C++的书
    VsevenMagic
        29
    VsevenMagic  
       2021-03-25 08:16:44 +08:00 via iPhone
    java 实在是太卷了
    hafuhafu
        30
    hafuhafu  
       2021-03-25 08:59:20 +08:00
    姿势不对,其实没啥好搭建的,maven 设置镜像,Spring Initializr,第一次等依赖下完,加个代码生成器或者通用 mapper 之类的,加个扫描注解,可以开始 CRUD 了,单表操作大多数都自动生成了,不算下载依赖时间看文档照做也不用几分钟。
    bruce0
        31
    bruce0  
       2021-03-25 09:02:23 +08:00
    当时不写 Java 去写 go 了 就是觉得 spring 那一套配置太繁琐了 面向配置编程
    Cowhitewhite
        32
    Cowhitewhite  
       2021-03-25 09:03:49 +08:00
    spring 已经很牛逼了
    uselessVisitor
        33
    uselessVisitor  
       2021-03-25 09:10:13 +08:00
    @ila 重写是因为父类的通用方法不满足子类的需求,重载是为了可以同一个方法名可以使用不同的变量来定义方法,都是多态特性
    uselessVisitor
        34
    uselessVisitor  
       2021-03-25 09:11:03 +08:00
    @bruce0 都是为了简化开发。。
    duniqb
        35
    duniqb  
       2021-03-25 09:15:42 +08:00
    “springboot,下载依赖的 jar 包要好长时间”?是没有配置 maven 镜像仓库吧,换个华为云或阿里云的镜像,跑满带宽
    xaplux
        36
    xaplux  
       2021-03-25 09:16:04 +08:00
    既然这么说了,那就是不适合😏
    keymao
        37
    keymao  
       2021-03-25 09:22:00 +08:00   ❤️ 2
    [即使有错误也很容易定位错误位置]

    看来你还是没见识过真正难找的 BUG 或错误... Java 为什么会被企业级应用系统所青睐啊? 想明白这个问题 你会想明白很多问题。。 Spring 的这套东西简直就是这类脚手架里面的最佳实践。。
    fxjson
        38
    fxjson  
    OP
       2021-03-25 09:24:32 +08:00 via Android
    @keymao 同意你说的,所以一直在说服自己要学 java
    Rwing
        39
    Rwing  
       2021-03-25 09:31:09 +08:00
    要不要试试 C# 😀
    roudancongji
        40
    roudancongji  
       2021-03-25 09:41:09 +08:00
    Java 解决了多少就业问题?
    ghouleztt
        41
    ghouleztt  
       2021-03-25 09:44:56 +08:00
    我 Java 的最近在尝试 go,被 go 的包管理整的一头包
    jorneyr
        42
    jorneyr  
       2021-03-25 09:47:45 +08:00
    以前写 Java Hello World 的时候一个文件就可以编译运行,现在写项目还得先 IDE 里面创建个项目,修改 build.gradle 等,太麻烦了,但是用 Java Hello World 的思维写大点的项目肯定是不可以的。
    LLaMA2
        43
    LLaMA2  
       2021-03-25 09:49:23 +08:00 via Android   ❤️ 1
    一千个人写出来的 java 代码都是一样的,可是一百个人写出的 php 都不一祥,这是一个 java 程序员的主观感受,不知道阁下是否同意
    WispZhan
        44
    WispZhan  
       2021-03-25 10:00:48 +08:00
    @ye4tar 那可不一定,凡是不要太绝对。

    代码写得💩️的人,写啥编程语言的代码都💩️。 因为他对自己的代码没有要求。
    Oktfolio
        45
    Oktfolio  
       2021-03-25 10:05:12 +08:00
    @diggzhang 这个和 Java 有什么关系?...
    Oktfolio
        46
    Oktfolio  
       2021-03-25 10:09:34 +08:00   ❤️ 1
    go vendor, go dep, go mod......还要被墙......VS Code 开发环境都没法正常搭起来......依赖竟然是从 GitHub 拉的......
    panlatent
        47
    panlatent  
       2021-03-25 10:14:07 +08:00
    要学, 但也不一定非得是 Java, C#也行, 但是岗位相对较少. 目前 PHP 的主要应用场景还是 Web, 其他领域的配套不太行, 做起事来阻力重重. 而且动态语言也有其固有的问题. 在现代 IDE 的帮助下, 编译型语言编码体验可能比动态语言还要舒服一些. go 的话, 我觉得优势在于语法和并发简单, 写点工具堪比脚本语言, 但是语法相对简单, 又没有泛型, 就算等泛型出来了加上配套又不知何年何月. 感觉把本来复杂的东西用 go 写, 对人的心智负担比较大.

    作为 PHPer 学习 c / go / java or c# 我觉得都是很有必要的.
    reed2020
        48
    reed2020  
       2021-03-25 10:20:36 +08:00
    Java 入门的,学 Go 的时候简直受不了依赖管理和表达能力。。
    zjsxwc
        49
    zjsxwc  
       2021-03-25 10:27:03 +08:00
    Carlgao
        50
    Carlgao  
       2021-03-25 10:29:23 +08:00
    用 go 的包管理必配代理啊 这个代理配一下香的很 地址: https://goproxy.io/zh/
    RipL
        51
    RipL  
       2021-03-25 10:32:39 +08:00
    go 不香么
    yaphets666
        52
    yaphets666  
       2021-03-25 10:53:45 +08:00
    @ila 本 java 初学者的理解,一切都是为了抽象.设计 java 这门语言的人,经验非常老道.在学习过程中,能感觉到这门语言处处在为抽象提供便利.
    覆写和重载就是为抽象提供便利.
    想象一下,在继承中,通过覆写和重载为子类实现多样,定制化的方法...
    FantaMole
        53
    FantaMole  
       2021-03-25 10:55:50 +08:00   ❤️ 3
    沉下心来搞就好了,说这么多都是借口。你重新学一门语言,自己又没有到一通百通的境界的话,碰到一堆问题是必然的。说真心不喜欢 Java,有我不喜欢吗。我上大学的时候,我那老师讲的 Java 课给我听麻了,一学期的课下来看了一学期小说,最后考试还挂科了。然后我再也不想碰 Java 了

    我知道面向对象是什么意思,还是靠我大二暑假自学的 python 搞懂的。之后四年,包括参加工作的两年,除了为了补考,再也没看过 Java 相关。这期间我写过 Node.js 和 PHP 的商业代码,偶尔也会学着写点 Golang 玩玩,就是 Java,一看到之后就犯恶心,就看着都难受那种

    但是后来,公司要转技术栈,要么滚要么转,给一个月缓冲,自己下班想办法去学。一个月后直接分配任务。还不是写了。到现在,隔两天还要学习一两个小时 Spring 源码或者 JVM,也乐在其中了。

    说到底,无非是你用 PHP 写的各种顺手,用 Java 各种毛病,然后心里有了落差而已,然后把这种落差带来的挫败感归咎到 Java 不好。我只能说放平心态,你想突然用脚写字,还要求写得跟手一样快,这是不可能的

    我给个方法吧,既然你写 PHP,Laravel 学过吧,核心的 IOC 就算没看过源码,大致原理应该是懂得差不多了吧。Spring 这个框架也差不多,思路是一样的,以此去对比学习 Spring Boot 的一次请求流程

    你已经有工程基础了,就没必要学什么从零开始了,不如去 github 上找一个开箱即用的 Spring Boot 开源框架,简单到只要用 IDEA 打开,改一下配置,然后就能跑起来的那种。学着去写一个简单接口,整个业务分层还是 MVC 那一套,你会发现其实花的时间也不会太多,就能写 CRUD 的业务代码了,然后再深入去了解 Java,了解 Spring

    哦,另外,mybatis 确实就是这么恶心,Java 的 ORM 框架也确实没几个好用的。虽然跟 yii 的 active record 或者 Eloquent 比还是差远了,但 mybatis-plus 能有效缓解恶心程度

    Every cloud has a silver lining,慢慢来
    no1xsyzy
        54
    no1xsyzy  
       2021-03-25 11:00:58 +08:00
    你体会到痛苦就是工程化本身。
    不是工程化带来的副作用,只是你如何看待的问题。
    有些人喜欢语法糖越多越好,甚至自己随手写语法糖,那就是 Haskell Lisp 写起来。
    cdh1075
        55
    cdh1075  
       2021-03-25 11:02:44 +08:00
    开出租车的人都能花 10 万块钱买个车,你就不能花 100 块钱给自己拉条快点的网?
    yeqizhang
        56
    yeqizhang  
       2021-03-25 11:03:19 +08:00
    @ye4tar js 有这个感受,看别人写的前端代码,看吐了
    lancelock
        57
    lancelock  
       2021-03-25 11:04:45 +08:00   ❤️ 1
    纳了闷了,java 要下 jar 包,难道你 go 不要下依赖吗?有啥区别?如果你配了 goproxy,那你就不会给 maven 配个 mirror 吗

    还有 service 、mapper 这些,也没人强迫你这么写,你要愿意把所有逻辑都写在 controller 里也没人拦着你。

    而且 spring mybatis 也不是 java 的一切,你要用不惯也不是没有替代品,谁要你自己局限这些里面
    jitongxi
        58
    jitongxi  
       2021-03-25 11:09:21 +08:00
    现在还好了. springboot 这些都可以内置 Tomcat undertow 这些 web 容器了, 对于运行环境就一个 jre,然后 java -jar 运行完事

    以前的 springmvc, 那是真的累死人,到处 xml

    maven 包下载慢,可以给 maven 配置加代理的.

    语法方面 java 被 kotlin 秒杀的不行了,香的一批
    252748371
        59
    252748371  
       2021-03-25 11:23:45 +08:00 via Android
    java go 都会,还是 java 写得爽,go 说实话除了省内存不觉得比 java 好在哪
    zzzmh
        60
    zzzmh  
       2021-03-25 11:37:38 +08:00
    关于 maven 慢,配置一下阿里云镜像,速度起飞
    关于 mybatis 不方便,用 mybatis plus ,和 mybatis plus generator,一键生成 bean service mapper
    另外说下我的理解,为什么 java 看起来比其他复杂?
    1. java 大部分时候只负责写接口 传入返回 json
    2. java 大部分时候需要考虑多人协同开发和可读性问题,也就是第一个人写完,离职了,下一个人读前者写的代码,可以快速上手,或者多人合作的时候,可以分别自己写自己的模块
    Wuxj
        61
    Wuxj  
       2021-03-25 11:46:32 +08:00
    不适合。
    heyli
        62
    heyli  
       2021-03-25 12:07:01 +08:00
    我就是 php go 转的 java 一开始是真不习惯 我 php 一个数组打天下
    后面开始写后台服务, 才发现 juc 是真的强 又恶补了下数据结构跟算法
    java 工资高不是没道理的
    liuxu
        63
    liuxu  
       2021-03-25 12:21:42 +08:00
    @yeqizhang go 我现在基本都直接用 linode 国外的服务器做环境,vscode 用 ssh 远程开发
    yamasa
        64
    yamasa  
       2021-03-25 12:30:37 +08:00
    你用 vertx 照样可以写 web 服务,不要上来就怪到 springboot 上。而且 boot 还不够容易上手吗?比 mvn 时代好太多了已经。
    bugmakerxs
        65
    bugmakerxs  
       2021-03-25 14:18:22 +08:00
    java 很啰嗦,不过工程规模上来之后更好维护。我 n 年前也写过前端,我觉得前端调样式比后端麻烦很多。
    下载 jar 包慢这个可以用阿里云镜像加速解决。
    fkdog
        66
    fkdog  
       2021-03-25 14:25:48 +08:00
    java c++ 被称为工业级别的语言
    你猜猜是为什么。
    onice
        67
    onice  
       2021-03-25 17:17:10 +08:00
    Java 挺优美的,它的啰嗦,又臭又长是为了让一个新手也能写出符合规范的代码,所以 Java 是工业语言。既然写 Java 了,先摆正心态吧。
    bthulu
        68
    bthulu  
       2021-03-25 18:14:50 +08:00
    java 确实一坨屎, 自身 sdk 里连个生产可用的 httpserver 都没有, 还要依靠 tomcat 那一坨. servlet 规范到现在还有什么鸟用, 还有谁会写 jsp 的. 你要是不强依赖 Java, 建议.net core, 简单好用性能也强, 就是太简单了工资不高
    T3RRY
        69
    T3RRY  
       2021-03-25 23:23:05 +08:00
    哪个语言的包不需要 镜像 /代理 ?
    luckylo
        70
    luckylo  
       2021-03-26 08:49:11 +08:00 via Android
    @onice #67 就从语言层面来说,.net 是微软家的,go 是 google 家的。微软的砍刀部做的事还少么? google 也不作恶的。这种把吃饭的家伙绑在一个商业公司上我认为不明智的。java 而言,是 oracle 一家之言么?不爽 oracle jdk,大可换一个。生态而言 Apache 基金会 跟 spring 全家桶就好,对比下 . net go 的生态,这完全不在一个层次上的。
    cmlx1014
        71
    cmlx1014  
       2021-03-26 10:53:46 +08:00
    企业级应用 云 DevOps 大数据 哪边用不到 Java Java 生态太强大了
    ila
        72
    ila  
       2021-03-27 20:21:47 +08:00 via Android
    @yaphets666 大概知道这个道理,我把面向对象这部分看完就开始写些代码熟悉下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2940 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 14:03 · PVG 22:03 · LAX 06:03 · JFK 09:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.