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

怎么自学 Java 啊

  •  1
     
  •   Romanticlizhi · 2017-05-15 17:26:50 +08:00 · 8075 次点击
    这是一个创建于 2748 天前的主题,其中的信息可能已经有所发展或是发生改变。

        毕业后从前端转到 Java 了,平时上班有空就自学 Java,从今年三月开始到现在 Java 基础基本的都学习的差不多了(或者哪些 Java 基础是需要重点学习和巩固的提出来告诉我一下),想着手开始学习 spring,学习 tomcat,学习 jvm,但总感觉自己没有一个好的入手点,有没有 Java 老司机给点建议怎么自学啊,自己尝试了很多,但总感觉学习方法不对,花了很多时间发现效果也不好,没有项目经验,转型不久,各位 Java 老司机给点建议啊,欢迎联系我给我中肯的建议,先谢谢啦!

    72 条回复    2017-05-24 15:37:11 +08:00
    vingz
        1
    vingz  
       2017-05-15 17:30:11 +08:00
    mark,我也需要经验
    vingz
        2
    vingz  
       2017-05-15 17:31:53 +08:00
    也是在自学 java,熟悉了基础(也在遗忘 ing......
    平常也可以用 java 刷刷算法题。
    下一步也许是学习框架 /jvm 吧
    xustrive
        3
    xustrive  
       2017-05-15 17:32:45 +08:00
    我不会告诉你 我已经从入门到放弃 N 次了 正在准备第 N+1 次
    @Romanticlizhi
    @vingc723
    JRight
        4
    JRight  
       2017-05-15 18:23:15 +08:00   ❤️ 1
    https://www.shiyanlou.com/courses/?course_type=all&tag=Java&fee=all 你可以试试这个在线练习写工程的网站。

    我从我自己的经验来看学一个语言最快的方式就是自己拿着它实现一个项目,不管多小,甚至一个工具类都行。在写的过程中记录下遇到的问题和解决思路与方案。当然写的过程中和完成后都应该看看别人的代码实现,反正就是遇到问题解决问题吧
    BiggerLonger
        5
    BiggerLonger  
       2017-05-15 18:58:23 +08:00 via Android
    Thinking in Java 先掃一邊吧,然後各種設計模式,然後線程,NIO,JVM 之類的(基本瞎扯的)
    qinxi
        6
    qinxi  
       2017-05-15 19:03:03 +08:00 via Android   ❤️ 1
    找个会 JAVA 的男朋友。
    PythoneerDev6
        7
    PythoneerDev6  
       2017-05-15 19:05:12 +08:00
    上手写东西。设计模式很重要。 其次就是一些框架性的东西。上手就会有结果了。
    Cbdy
        8
    Cbdy  
       2017-05-15 19:08:46 +08:00 via Android
    从 java 工具链着手:idea、maven
    从 java ee 标准着手:servlet、jpa、cdi
    fay94
        9
    fay94  
       2017-05-15 19:11:17 +08:00
    kyuuseiryuu
        10
    kyuuseiryuu  
       2017-05-15 19:20:28 +08:00 via Android
    我是项目驱动学习法,通过一个项目的实现去一步步学项目中需要的技术。
    wiZ90
        11
    wiZ90  
       2017-05-15 19:28:17 +08:00 via Android
    80 出售全新的 java 疯狂 java 讲义 /滑稽
    hepin1989
        12
    hepin1989  
       2017-05-15 19:32:58 +08:00
    作为译者我推荐你可以看下《 Netty 实战》,这本书虽然写的是现代 Java 分布式系统的基石,但是也可以为你后面的职业生涯打下基础。
    Betacoefficient
        13
    Betacoefficient  
       2017-05-15 19:41:33 +08:00
    同楼主,我也需要学习 java ;楼主哪儿的,我在软件园。
    cjyang1128
        14
    cjyang1128  
       2017-05-15 19:43:14 +08:00
    @hepin1989 额,大神,虽然我买了你的书,但是你确定给新手推荐 netty。。。真的好吗。广告也要讲究基本法啊!
    @Romanticlizhi 既然基础已经学好了,就直接开撸 Spring 吧。推荐《 Spring 实战》。撸过 Spring 之后再撸 mybatis,基本上可以做后端 api 了,你又会前端,两者结合,小项目就可以做了。然后开始看微服务,Spring Cloud 或者 Dubbo。这个时候可以开始学习 netty,顺带了解分布式系统。jvm 一开始不用学的很精,会 oom 或者死锁的时候找出问题就差不多了。然后可以了解一些大数据的东西,比如 hadoop。
    Lonely
        15
    Lonely  
       2017-05-15 19:46:44 +08:00 via iPhone
    @cjyang1128 这人一直在不分场合地打广告
    hepin1989
        16
    hepin1989  
       2017-05-15 20:25:12 +08:00
    @cjyang1128 这本书其实是不需要中高级水平啊,初学完全可以,只是需要多看几遍。。。。。。而且说点儿实在的,去面试也可以吹点儿牛,多点儿工资。
    sudoz
        17
    sudoz  
       2017-05-15 20:39:49 +08:00
    去年这个时候我看到一个帖子,是后端转前端,😂
    huiyue
        18
    huiyue  
       2017-05-15 20:41:56 +08:00
    项目会让你成长很快,尤其是有人带着你的情况下。
    littleshy
        19
    littleshy  
       2017-05-15 20:51:19 +08:00
    @hepin1989 #16
    多看几遍……
    我看书如果第一遍看不懂,证明这本书还不适合我,我都会先搁置而找简单点的看,不要在这一本上死嗑。
    所谓触类旁通。
    snailsir
        20
    snailsir  
       2017-05-15 22:31:26 +08:00
    还是 php 吧。毕竟世界上最好的编程语言。头像不错。
    mingyun
        21
    mingyun  
       2017-05-15 22:36:38 +08:00
    @fay94 这个网站不错
    Ouyangan
        22
    Ouyangan  
       2017-05-15 22:48:49 +08:00
    做个项目啊,你会发现之前学的都是什么啊,做起来才知道自己学了个皮毛
    andychen20121130
        23
    andychen20121130  
       2017-05-15 23:05:51 +08:00
    我直接拿起来用。没学。
    solidsnake
        24
    solidsnake  
       2017-05-15 23:15:57 +08:00
    先 J2ee 文档 过一遍吧,然后 Spring 全家桶。
    我也想问这个问题,但是我打赌,不是妹纸在这里问这个问题,回复不超过 10.
    hepin1989
        25
    hepin1989  
       2017-05-15 23:21:25 +08:00 via Android
    @littleshy 可以看快点,能看多少看多少嘛,不过的确是多看几本就通了
    hepin1989
        26
    hepin1989  
       2017-05-15 23:34:26 +08:00 via Android   ❤️ 3
    我个人建议,虽然 Spring 被大面积使用,不过直接看 Spring 反而容易束手束脚。
    您可以先看看常见的 JSON 库,然后按自己的喜好选择一个。
    然后您可以看看 REST,先看看论文,期间您可能需要买本 HTTP 权威指南看看,可以有选择性的看。
    在后面就是数据库了,我推荐 SQL 的你配套用个 JOOQ 就行了,怎么简单怎么来。然后 NewSQL 您可以看看 Mongo。
    这两个搞定了,您就需要看下怎么穿起来了,这个时候就需要选择一个框架了。用 Spring Boot 或者 Play 都是非常简单直接的。我个人推荐后者。

    你只要跑通了,你的理论存储就已经不错了。

    在后面就需要学习缓存,分布式调用了,当然都是根据工作需要来学习。

    建议您先理论后实践,不然有人说自己这也精通那也精通,两个问题就露了。通过不断地扎实理论知识,达到触类旁通,融会贯通的目的。

    再到后面肯定需要系统的学习各个专业领域的知识了,全是爱好。推荐您在学完 并发编程实战以后,上手  Akka,可以减少您处理并发编程的痛苦,同时也可以开辟全新的天地。

    大家都是一步一步过来的,希望可以帮助到您。
    hepin1989
        27
    hepin1989  
       2017-05-15 23:39:04 +08:00 via Android
    @Lonely 你不要说一直,如果是一只那不是我自己已经占领整个板块了。分享和传统的声音本来也不可能让所有人爽,我只好让大部分人看到了就达到目的了。至于场合,我给的建议比单纯的喷要好的多吧。
    hepin1989
        28
    hepin1989  
       2017-05-15 23:45:56 +08:00 via Android
    补充下就是,如果你真的是前端入手,最好是 nodejs,如果不喜欢 js 可以跟着一个全栈框架,比如 Play 和 Spring Boot.这样见效快,也有成就感,当然我上面说的那些您也可以看下,还是那句话理论与实践并重,同时快速培养成就感。

    推荐跟着 Play 做,工作机会也很多,短轻快。
    ivanlw
        29
    ivanlw  
       2017-05-15 23:48:40 +08:00
    少点自拍,多看点书。
    magicdawn
        30
    magicdawn  
       2017-05-16 00:18:12 +08:00
    Java 的天花板真的好高哈...
    推荐都学 Java 吧...哈哈哈...
    magicdawn
        31
    magicdawn  
       2017-05-16 00:19:24 +08:00
    yuhuigreed
        32
    yuhuigreed  
       2017-05-16 08:18:07 +08:00
    唉!我也在学,第二次从入门到放弃,打算开始第三次
    gowk
        33
    gowk  
       2017-05-16 08:27:21 +08:00
    都什么年代了。。别学 Java,别学 Java,别学 Java
    badreamm
        34
    badreamm  
       2017-05-16 08:37:40 +08:00
    小姐姐你这个头像我好像在 osc 见过
    Arainc
        35
    Arainc  
       2017-05-16 08:44:59 +08:00
    @gowk 那学什么
    qinxi
        36
    qinxi  
       2017-05-16 09:03:58 +08:00
    @hepin1989 play 工作机会多吗...并不是吧.
    beyoung
        37
    beyoung  
       2017-05-16 09:15:19 +08:00 via iPhone
    学 go 吧 你可能会爱上这门语言
    NxiJSiOS
        38
    NxiJSiOS  
       2017-05-16 09:36:10 +08:00
    找个会 JAVA 的男朋友,下 一 题
    nanjishidu
        39
    nanjishidu  
       2017-05-16 09:41:39 +08:00
    学 go 吧 你可能会爱上这门语言
    yoke123
        40
    yoke123  
       2017-05-16 09:41:54 +08:00
    其实 我想知道
    如果你是以男性来发帖问这个问题
    回答的人会不会喷你呢
    唔.........
    Jeter
        41
    Jeter  
       2017-05-16 10:00:10 +08:00
    @cjyang1128 哈哈,不懂设计模式的东西直接看 spring 也是很难看懂啊
    nilai
        42
    nilai  
       2017-05-16 10:01:35 +08:00
    都什么年代了。。别学 Java,别学 Java,别学 Java
    aroa
        43
    aroa  
       2017-05-16 10:15:52 +08:00
    @qinxi 有理
    ppwangs
        44
    ppwangs  
       2017-05-16 10:48:20 +08:00
    马士兵王勇初级教程,ke.qq.com,还有网易公开课
    newworld
        45
    newworld  
       2017-05-16 10:52:36 +08:00
    跟着我一起学习 PHP 吧 我们一起进步 哈哈
    yanchao7511461
        46
    yanchao7511461  
       2017-05-16 10:58:06 +08:00
    @nanjishidu 据说 go 的半吊子和半完成度的框架和库特别多。。
    tvallday
        47
    tvallday  
       2017-05-16 11:03:23 +08:00
    先订个小目标,比如说写个 game server,就算完成只一半,你的水平都不是一般的 java 程序员能比的。
    fyibmsd
        48
    fyibmsd  
       2017-05-16 11:06:39 +08:00
    把 jvm 源码看三遍
    jinhan13789991
        49
    jinhan13789991  
       2017-05-16 11:08:59 +08:00
    《 java 编程思想》过一遍。英语不差,spring 官网例子过一遍就行了
    hepin1989
        50
    hepin1989  
       2017-05-16 11:28:10 +08:00
    @qinxi 阿里 UC 子类的,其实很多。
    xianyu0
        51
    xianyu0  
       2017-05-16 12:54:01 +08:00
    人家连项目经验都没有,楼上一堆动不动就推荐 thinking in java,也是醉了。

    我之前也是自学 java,也曾经历过这个阶段。给楼主推荐本书,应该适合你这个时候看:<Spring 3.x 企业应用开发实战>
    Romanticlizhi
        52
    Romanticlizhi  
    OP
       2017-05-16 13:52:46 +08:00
    @xianyu0 可以,可不可以加个好友呢,想具体问一下这个阶段该怎么来学
    wjwazero
        53
    wjwazero  
       2017-05-16 15:04:32 +08:00
    多上 GitHub 是学编程的通法
    skyun
        54
    skyun  
       2017-05-16 15:14:40 +08:00
    @yuhuigreed 握个手,我才开始第二次从入门到放弃。感觉自学 java 总是差了点什么,所以这次打算一边学 android 开发,一边学 java,通过实践加强学习。系统化学习太漫长了,不适合我性格。
    ai8724968
        55
    ai8724968  
       2017-05-16 15:39:57 +08:00 via Android
    www.java1234.com
    我之前就是在这自学的,后面的项目视频需要收费。
    基础视频免费,偏实战,不深入。可以过一遍,再开始啃书。
    AltairT
        56
    AltairT  
       2017-05-16 16:01:53 +08:00 via iPhone
    我也在学,我之前自学了点 Android,行情不好就没继续提高,然后下班后学 JavaEE。考虑到知识点比较多,我打算先过完培训班视频再去补基础。这样进度看得到,边看边写能做出东西信心会好些。书的话目前选定 spring3.x 企业实战和 spring in action,实战买了还没开始看。视频学到 struts2,虽然大家都说过时了,但是我觉得学学没坏处。
    powerbobo
        57
    powerbobo  
       2017-05-16 16:08:54 +08:00
    同样是在学着 java 的 感觉要快可以很快,还是拿个东西撸下会印象深点
    neighbads
        58
    neighbads  
       2017-05-16 16:16:50 +08:00
    实际她是来找会 java 的男朋友的。。。。/斜眼笑
    hepin1989
        59
    hepin1989  
       2017-05-16 20:18:27 +08:00
    @Romanticlizhi 那本书并不好,你有前端经验,搞全栈开始,多好,成就感还来得快。作为一个妹子,我建议你 Play 或者 SpringBoot 入手。我个人更加建议 Play。分分钟搞定,成就感满满。
    你可以加 Play 群看看,机会多得是。128259394
    hepin1989
        60
    hepin1989  
       2017-05-16 20:19:52 +08:00
    @neighbads 我有老婆了哈哈,不和大家争抢了。
    hepin1989
        61
    hepin1989  
       2017-05-16 20:20:31 +08:00
    @AltairT 个人不建议学习 struts,在来这边几乎是淘汰产品,现在都是前后端分离,直接搞 SpringBoot 或者 Play 吧。真的,亲,不骗你。
    sorra
        62
    sorra  
       2017-05-16 20:31:55 +08:00
    我认为 Java 的学习难度主要在于入门的好书少、软件生态不统一。
    《 Spring 3.x 企业应用开发实战》更新到了 4.x,学框架看这本基本上就够了,然后看看江南白衣的博客、开涛的博客、InfoQ 等等。语言入门不知道推荐哪本好,因为我以前用的《 Java 核心技术》和《 Java 编程思想》都不是很满意。
    然后就是多写,多 debug,积累经验。
    AltairT
        63
    AltairT  
       2017-05-17 00:22:37 +08:00 via iPhone
    @hepin1989 起点比较低,之前是做单片机的。目前在南京不入流小公司混,自学做点初级安卓。我知道 spring boot 是趋势( play 框架我都没听过 /泪),但是学 ssh ssm 是务实的选择。如有更多建议,请不吝赐教。
    hepin1989
        64
    hepin1989  
       2017-05-17 01:58:37 +08:00
    @AltairT 您好,我刚刚在知乎上提问,才看到。

    其实说实话,我大学那会儿也喜欢学习单片机,后来我转行搞了 Android,在最后又变成了服务器了。

    如果你问我最中肯的建议,我可能觉得您可以在 IOT,也就是单片机进行深挖。

    当然如果您已经铁定心转行了,我建议您在 Java 基础知识、网络并发编程、分布式系统方面深挖,为何,你现在如果来阿里了,你会发现这些都是你日常工作中需要用到的。

    当然这些知识,就算你日常中不会完全接触到,也可以增加你面试的时候的杠杆吧。

    所以,如果落实下,我建议和上面一样,Spring Boot 或者 Play 开始,作为主线,然后延伸开,如果没有一条主线,学了西瓜丢西瓜也是不好的。还有虽然小公司,不过业务挑战大,也很能够锻炼人,不过你要以更高的要求要求自己,对吧,比如在小公司的时候想来大公司,来了大公司就要做更大的事情,其实是一样的,不变的都是我们一起努力。

    对我个人来说,对我提升非常非常大的就是 Netty、Play 和 Akka,当然也包括 Scala。这些对我来说就是穿针引线,当然我贡献出来也有人会觉得我太剑走偏锋了,实际上,我对 Spring 5 这些也学习了一遍。多掌握点技术,有一两门看家本领,我觉得还是很吃香的。如果别人干啥,你干啥,那么你的作用和特点是什么?可插拔性?

    反正一起加油吧,技术路线和职业规划我也只能分享我的,以及提点建议,并不能够为您做出任何决定,不过还是那句话,做或者不做,而不要试。与君共勉。

    当然,如果您想要了解 Java 网络编程相关的知识也可以买《 Netty 实战》,或者找我签售,社区也在搞活动,当认识新朋友了。毕竟大家都是不断不断成长的,您说是吧。
    nanjishidu
        65
    nanjishidu  
       2017-05-17 08:29:37 +08:00
    @yanchao7511461 据说。。。可以用一下。。。只要有判断能力就行
    eurry
        66
    eurry  
       2017-05-17 08:59:04 +08:00
    FrankD
        67
    FrankD  
       2017-05-17 09:02:01 +08:00
    先定个具体的目标比较好,比如做个电商类的网站,前期做出功能就行。做着做着就知道自己哪一块的知识薄弱,然后再去补就好了。
    ajan
        68
    ajan  
       2017-05-17 09:46:24 +08:00
    System.out.println("我只是想输出个字符串...");
    hellojl
        69
    hellojl  
       2017-05-17 10:50:35 +08:00
    想要巩固一下的话,可以看看 Effective Java,然后看看 Head First 设计模式。前者短小,但是值得细看。后者看上去厚,其实很快就能看完。
    自学的话,在学习中不断地获得成就感很重要。可以尝试做一点东西。这个阶段推荐直接上手一些框架,Spring、MyBatis 之类的。最好的材料是官方文档,Spring 的话还可以看下 spring in action
    随着对 Java 使用的越熟练,可以去看下更深层次的东西,并发,Jvm 等等,以及其他在后端广泛应用的技术,分布式,NoSQL 等等
    gowk
        70
    gowk  
       2017-05-22 16:58:00 +08:00
    @Arainc Python Javascript,或者 Go 都可以
    Romanticlizhi
        71
    Romanticlizhi  
    OP
       2017-05-22 19:15:59 +08:00
    @eurry 克服了好久去阅读英文文档,然而到现在还是看到就头疼。。。
    Romanticlizhi
        72
    Romanticlizhi  
    OP
       2017-05-24 15:37:11 +08:00
    @huiyue 没人带的话怎么破。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2875 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 06:52 · PVG 14:52 · LAX 22:52 · JFK 01:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.