前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java 入坑指南,新人必看!

Java 入坑指南,新人必看!

作者头像
BWH_Steven
发布2021-09-22 12:28:00
3910
发布2021-09-22 12:28:00
举报
文章被收录于专栏:理想二旬不止理想二旬不止

为满足移动端和PC端的双重阅读体验,以及文章质量的保证,开始重构的以及新写的文章都会基于 “语雀” 平台编写,公众号会同步刚发布的文章,但随后的修改或者更新只会在语雀中维护。👉 点击底部左下角 “阅读原文” 即可跳转到文章最新页面!理想二旬不止@BWH_Steven

1. 想入坑,那我应该学什么?怎么学?

新手上路,最重要的就是选对方向,茫茫的语言海洋中,不同的开发语言被应用在不同的领域中,虽然以“某某语言程序员”自居过于片面,毕竟开发语言只是工具,更重要的是设计与思想,但是就入门甚至入门后的几年内,你或许始终是围绕你所选择的这门语言的主线和支线进行探索。所以,就前期而言,选择则一门适合的入门语言,这很重要! 分析具体的语言选择前,我们先来简单的讲一下,现在有哪些常见的技术方向。

1.1 选择一个适合自己的技术方向

就现在看来,常见的技术方向有:前端、后端、Android、IOS、算法、大数据、人工智能、测试开发等等。下面我终点阐述一下我相对熟悉的三个方向,其它方向我后面请教一下相关的同学再补充。

1.1.1 前端

科班在校学生,以及做过涉及 Web 项目的同学,大部分都接触过 HTML + CSS + JavaScript(JQuery) 这老三样,就是现在前端蓬勃发展的基础。 接着就是 Vue.js / Angular / React.js 这几个前端框架,例如 Vue 很多后端同学也在积极的尝试和学习,现在 3.0 版本也是带来了很多新特性。 还有 Node.js 它也在前端领域中变得越来越重要,喜欢折腾的朋友可能知道,使用 Jekyll / Hexo + GitHub Pages / 服务器 搭建一个静态博客的时候, Node.js 就是必备的环境。 而现在处于一个大前端的时代,也就是把所有的前端统一起来,例如,Web、Android、iOS、小程序等等,现在只需要一次开发,就能在多个平台上适用。解决了多个平台上技术栈不统一,代码无法复用等的问题。

1.1.2 后端

首先对于新人同学来说,以及曾经中学疯狂折腾“黑客技术”(菜鸟脚本小子)的我,可能会有一个困惑,我们常常看到的 Admin 登录,后台管理中心,是不是就是后端?当然不是!!! 一个软件,用户能看到的只有界面上的 UI 效果和一些数据,我们需要存储和检索数据,需要实现各种复杂的业务逻辑,以此支撑产品的功能和需求。因为常常与数据库打交道,也被调侃为 “CURD 工程师”。但后端可不仅仅只是 CURD,如何设计一个具有严密逻辑,健壮性、稳定性、可扩展性都很高的程序,才真正的考验功底。同时很多技术大牛能深入某一方向,开发出很多很强大的项目。 后端的语言有很多,Java、C++ 等等,我们下面再细说。

1.1.3 测试

测试,就是在项目的开发周期,和项目完成后验收时进行测试。一般来说学校的课程中,例如单元测试、功能测试、性能测试等等都会介绍到。而测试开发人员主要看就是基于了解业务需求的基础上,然后制定测试计划,制定与业务有关的测试用例等,测试结束后,进行线上回归,最终填写对应测试文档等。

1.2 众多语言,到底哪一门才适合我呢?

其实当你选择了你初始的技术方向后,基本常使用的语言已经被筛出来了,我下面就针对每种语言的特性进行一个有趣的描述:

1.2.1 C

编程界的法老C大叔,因年长、稳重被众人所熟知,“上古时期”好像就存在了,是诸多后兴语言的前辈。(指 C 语言出现比较早,是很多语言的的基础。)

高级语言中,偏底层(厉害)的存在,常用于系统和硬件编程中。例如常见的单片机,机器车等诸多场景都可以用到。

1.2.2 C++

跟随 C 大叔学习武艺的 C++,练就了无数禁咒级别的魔法,他拥有强大的力量,对大家却丝毫不友善。(C++ 和 C 因为复杂的指针和内存管理等问题,对开发者的要求会相对高一些。)

兼有 C 底层操作便捷的特点,广泛的应用于游戏开发、工业、和追求性能、速度的应用,可以认为:C++ 是 C 的超集。

1.2.3 Java

Java小J是一名异时空行者,可以自由的穿梭在windows和linux的诸多位面,摒弃了C++诸多复杂的符咒,练就了一身,称为C++--的纯净魔法体系。(因为 Java 与 C++ 感觉是比较像的,但是 Java 又没有显式的指针等,所以有 C++--之称。)

Java ≈ 简单+强大 再加以可移植性等(一次编译、到处运行)的特点、称为了较长一段时间需求最高的编程语言之一,同时其配合 Spring 等拥有了极其好的生态,即使 go 等语言开始一定程度的流行起来,暂时也没有撼动到它的地位。

1.2.4 JavaScript

他叫 JavaScript 但是他和 Java 没有任何关系,总被人莫名其妙的低估,但他不仅能操纵DOM让,让元素闪现,还可以用jQuery让网页动起来,还可以用Ajax和后端的大哥们交互数据,在前端中也是能数得上名的高手。

最基础的web客户端脚本语言,Web前端开发者必须学习(还有html + CSS)。

1.2.5 Python

比小J年还长4岁的Py小哥,魔法招式,简单易用,但是威力却不容小窥,大数据、人工智能时代来临,被部落委以重任,被广大弟子看好。

入门比较简单的一种开发语言,可以进行Web开发,网络爬虫,计算与数据分析,以及人工智能等多个领域,如今比较火爆。

1.2.6 C

小井是一个超级漂亮的精灵小姐姐,但是只能呆在微软这片森林中,在这片领域中,小井可以优雅的发挥她最大的实力。

企业使用.net框架创建网站和windows应用,从语法和库来说非常优雅舒服,缺点就是平台的封闭性,不过这几年有了大的改善。

1.2.7 PHP

大家说阿P是一个长相丑陋,而又不守规矩的小伙子,没少让他的管理者头疼,但是他仍然拥有者自己的一片领地。

PHP是一种创建动态交互性站点的强有力服务器端脚本语言更适用于较短时间建立一个中小型网站免费,并且使用也较为广泛。

1.3 怎么开始学习的第一步?

选择好了学习的方向,那就是持续的学习就可以了,但是很多朋友会问我,我入门到底应该怎么学呢,是看书呢?还是看视频?还是看文档、博客呢? 就我个人的经验来看,对于学习的初期,最重要的就是建立自信,收货成就感,所以千万不要开始就疯狂看书,看官方文档等等。例如 《Java 编程思想》《Effective Java》 等等,根本就是劝退书籍,这些书只有到你有一定的开发经验后再去看,才能理解其中的深意。不过一些简单的入门书籍《Head First Java》《Java 核心技术 1》我觉得还可以买一下,但是我仍然不推荐以它们作为教科书看,哪块不懂,针对性当工具书看就好。我比较推荐的方式还是去看视频,B 站难道不是一个学习网站吗???可以看一下刘意老师14 15 年的 Java基础视频,我感觉这一版本简直神作,讲解的非常细,看完后你也会爱上林青霞(这是个视频中的梗)。不过现在大部分公司都稳定的使用 JDK 8,还有一些公司会跟着升到十几的版本,所以看完后要适当的补充一些 JDK 8/11 等的新特性等等。当然啦,每个人心中都有自己的哈姆雷特,我觉得可以把常见的例如黑马、尚硅谷等等几家的都简单看几分钟,看看哪个更适合自己。当你看到一行行代码被执行,相信你也能增大对于 Java 的学习兴趣。

  • 大家疑惑会 Java 只能在控制台中运行吗,好像没有什么用,这是因为 Java 是基础篇,后面各种数据操作,业务实现,各种框架等都需要雄厚的 Java 基础作为支撑,Java 能做的超乎你的想象。
  • 后面针对 Java 系的学习路线,我可以写一篇专题文章,我们这里只谈 Java 基础。

2. Java 常见概念

2.1 什么是 Java

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。—— 百度百科

Java 是一门面向对象的编程语言,至于面向对象是什么意思大家姑且可以不去理解,因为后面有一章专门会深入讲解这个问题,现在细究太不划算了。Java 与 C++ 很像,但是又没有指针等概念,所以单在语言的难度上,大家会通常认为 Java 比 C++ 简单一些。但是 Java 配合 Spring 等一些框架、中间件。在服务端是可以大有作为的。就像我上面对后端的描述:“实现各种复杂的业务逻辑,以此支撑产品的功能和需求”,而 Java 就是后端的一门代表型语言。

2.2 什么是 JVM

提到 Java,经常很多定义中会提到它是基于 Java 虚拟机运行的,这个就是 JVM,它是用来运行 Java 字节码文件(.class)的,因为 JVM 对于特定系统(Windows,Linux,macOS)有不同的具体实现,即它屏蔽了具体的操作系统和平台等信息,因此同一字节码文件可以在各种平台中任意运行,且得到同样的结果。

2.2.1 什么是字节码?

扩展名为 .class 的文件叫做字节码,是程序的一种低级表示,它不面向任何特定的处理器,只面向虚拟机(JVM),在经过虚拟机的处理后,可以使得程序能在多个平台上运行。

2.2.2 采用字节码的好处是什么?

Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以 Java 程序运行时比较高效,而且,由于字节码并不专对一种特定的机器,因此,Java程序无须重新编译便可在多种不同的计算机上运行。

为什么一定程度上解决了传统解释型语言执行效率低的问题(参考自思否-scherman ,仅供参考) 首先知道两点,① 因为 Java 字节码是伪机器码,所以会比解析型语言效率高 ②JVM不是解析型语言,是半编译半解析型语言 解析型语言没有编译过程,是直接解析源代码文本的,相当于在执行时进行了一次编译,而 Java 的字节码虽然无法和本地机器码完全一一对应,但可以简单映射到本地机器码,不需要做复杂的语法分析之类的编译处理,当然比纯解析语言快。

2.3 什么是 JDK

2.3.1 JDK(Java Development Kit)

JDK 是Java开发工具包,是程序员使用 Java 语言开发 Java 程序必备的工具包,它不仅包含 JRE ,同时还包含了编译器(javac)还包含了很多 java 调试,分析,文档相关的工具。使用 JDK 可以创建以及编译程序。

2.3.2 JRE(Java Runtime Environment)

JRE 是 Java 运行时环境,它包含了 JVM 和 Java 的一些基础类库,它用来运行已经编译好的 Java 程序(它就是用来运行的,不能创建新程序)

3. 结束

如何安装 JDK 和配置环境变量,我之前已经写过类似的文章,等我整理好,直接贴到下一篇,然后就可以开始 Java 的学习之旅啦! 我会尽可能的用通俗的描述和例子带大家学习 Java,然后把我这几年的经验也穿插着告诉大家。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-09-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 理想二旬不止 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 想入坑,那我应该学什么?怎么学?
    • 1.1 选择一个适合自己的技术方向
      • 1.1.1 前端
      • 1.1.2 后端
      • 1.1.3 测试
    • 1.2 众多语言,到底哪一门才适合我呢?
      • 1.2.1 C
      • 1.2.2 C++
      • 1.2.3 Java
      • 1.2.4 JavaScript
      • 1.2.5 Python
      • 1.2.6 C
      • 1.2.7 PHP
    • 1.3 怎么开始学习的第一步?
    • 2. Java 常见概念
      • 2.1 什么是 Java
        • 2.2 什么是 JVM
          • 2.2.1 什么是字节码?
          • 2.2.2 采用字节码的好处是什么?
        • 2.3 什么是 JDK
          • 2.3.1 JDK(Java Development Kit)
          • 2.3.2 JRE(Java Runtime Environment)
      • 3. 结束
      相关产品与服务
      消息队列 TDMQ
      消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档