Java环境安装与基础介绍

文章目录

文章目录

  • Java环境安装与基础介绍
    • 文章目录
    • Java 简介
      • 主要特性
    • 关于语言学习的选择
      • Python
      • Java
      • Go&Rust
    • Java环境配置
    • JDK与JRE的区别
      • JDK的安装
      • JDK的下载
      • JDK的安装
      • Java的环境变量配置
      • JDK配置验证
    • Java编译器IntelliJ IDEA的安装
      • 1.下载IDEA
      • 2.安装IDEA
      • 3.启动IDEA
      • 4.使用IDEA编写Java程序

Java 简介

​ Java 是由 Sun Microsystems 公司(Stanford University Network)于 1995 年 5 月推出的 Java 面向对象程序设计语言和 Java 平台的总称。由 James Gosling和同事们共同研发,并在 1995 年正式推出。

主要特性

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

​ Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点

  • Java 语言是简单的:

​ Java 语言的语法与 C 语言和 C++ 语言很接近,使得大多数程序员很容易学习和使用。另一方面,Java 丢弃了 C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java 语言不使用指针,而是引用。并提供了自动分配和回收内存空间,使得程序员不必为内存管理而担忧。

  • Java 语言是面向对象的:

​ Java 语言提供类、接口和继承等面向对象的特性,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为 implements)。Java 语言全面支持动态绑定,而 C++语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。

  • Java语言是分布式的:

​ Java 语言支持 Internet 应用的开发,在基本的 Java 应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括 URL、URLConnection、Socket、ServerSocket 等。Java 的 RMI(远程方法激活)机制也是开发分布式应用的重要手段。

  • Java 语言是健壮的:

​ Java 的强类型机制、异常处理、垃圾的自动收集等是 Java 程序健壮性的重要保证。对指针的丢弃是 Java 的明智选择。Java 的安全检查机制使得 Java 更具健壮性。

  • Java语言是安全的:

​ Java通常被用在网络环境中,为此,Java 提供了一个安全机制以防恶意代码的攻击。除了Java 语言具有的许多安全特性以外,Java 对通过网络下载的类具有一个安全防范机制(类 ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类 SecurityManager)让 Java 应用设置安全哨兵。

  • Java 语言是体系结构中立的:

​ Java 程序(后缀为 java 的文件)在 Java 平台上被编译为体系结构中立的字节码格式(后缀为 class 的文件),然后可以在实现这个 Java 平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。

  • Java 语言是可移植的:

​ 这种可移植性来源于体系结构中立性,另外,Java 还严格规定了各个基本数据类型的长度。Java 系统本身也具有很强的可移植性,Java 编译器是用 Java 实现的,Java 的运行环境是用 ANSI C 实现的。

  • Java 是高性能的:

​ 与那些解释型的高级脚本语言相比,Java 的确是高性能的。事实上,Java 的运行速度随着 JIT(Just-In-Time)编译器技术的发展越来越接近于 C++。

  • Java 语言是多线程的:

​ 在 Java 语言中,线程是一种特殊的对象,它必须由 Thread 类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为 Thread(Runnable) 的构造子类将一个实现了 Runnable 接口的对象包装成一个线程,其二,从 Thread 类派生出子类并重写 run 方法,使用该子类创建的对象即为线程。值得注意的是 Thread 类已经实现了 Runnable 接口,因此,任何一个线程均有它的 run 方法,而 run 方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java 语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为 synchronized)。

  • Java 语言是动态的:

​ Java 语言的设计目标之一是适应于动态变化的环境。Java 程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java 中的类有一个运行时刻的表示,能进行运行时刻的类型检查。

关于语言学习的选择

​ 你觉得世界上最好的语言是什么?(PHP风评被害bushi)

​ 各种语言都有其特有的好处,我们选择语言不是道听途说,而是应该脚踏实地去实践。你喜欢你习惯用那种语言,那就去使用。所有的语言其实没有可比性,只有编程能力的可比性。同样的程序员,其实在不同情况下是会选择不同的语言进行工作处理的。语言的选择也是分场合的。

​ 千万不要被语言束缚,不要因为你觉得某种语言好用就拘泥于这个语言环境中,而不愿意接触其他语言,这是编程中最致命的误区。

Python

其实劝退python的视频或者是文章还是很多的,问题总结下来主要是两点:

1.机器学习和算法岗位的门槛比较高,对模型如何实现的细节都要有十分的了解。但话又说回来,机器学习的应用现在对于我们这些普通开发者来说,入门难度已经是十分十分低了。(就算我一行代码也不会,我也有信心写一个人脸识别模型(经典Ctrl+c v)(bushi))。

2.python做后端开发的局限性比较强(纳闷,难道有哪门语言是无敌的?),纠结后端用哪门语言就和LOL上单是用猴子容易上王者还是诺手容易上王者是一个道理,实际上你用什么都上不了然而别人一个易大师都能上(简单来说就是菜的真实)。

学习python的原因以及python的优点:

1.python的语法十分简洁,好上手,你可以快速的掌握一些编程的基本概念

2.python十分容易就可以实现一些算法

3.用python做项目可以很快的给自己带来成就感,激发自身学习热情

Java

Java的一些基本优点:

1.Java使用的市场规模大

2.Java的市场前景广,在求职的时候也会有更多机会,因为国内很多大企业都喜欢用Java来写服务

3.适合计算机专业打基础,比如数据结构和垃圾回收

Java的缺点:
对没有任何编程基础的人来说,Java的上手十分麻烦,要装很多对象,还需要使用IDE,这个我们之后也会讲到

Go&Rust

近两年大热的服务器端语言

Go的优势首先在于大厂背书(Google),同时Go的语言特性以及语法也比较好学,但是Go的构建比较麻烦

Rust的语法比较花哨再加上对函数式的支持比较好,比较适合喜欢玩瑞文或者是帕克这样英雄的玩家,比较秀。

Java环境配置

JDK与JRE的区别

JDK(Java Development kit),Java开发工具包。JDK是整个Java的核心,他提供了Java的开发环境(提供编译器javac等工具,用于将java文件编译为class文件)和Java的运行环境(Java Runtime Environment)。JDK是java开发工具包,在其安装目录下面有五个文件夹、一些描述文件、一个src压缩文件。bin、lib、 jre这四个文件夹起作用。可以看出来JDK包含JRE,而JRE包含JVM。

最主流的JDK是Oracle公司发布的JDK,除了Oracle之外,还有很多公司和组织都开发了属于自己的JDK,例如国外IBM公司开发了属于自己的JDK,国内淘宝也开发了属于自己的JDK,各个组织开发自己的JDK都是为了在某些方面得到一些提高,以适应自己的需求,比如IBM的JDK据说运行效率就比Oracle的JDK高的多。

JRE(Java Runtime Environment)是Java的运行环境。面向Java程序的使用者,而不是开发者。如果你仅下载并安装了JRE,那么你的系统只能运行Java程序。JRE是运行Java程序所必须环境的集合,包含JVM标准实现及 Java核心类库。它包括Java虚拟机、Java平台核心类和支持文件。它不包含开发工具(编译器、调试器等)。

JDK的安装

OpenJDK和JDK的区别

如果我们提前安装idea,我们会发现idea会自动为我们安装一个OpenJDK,那么什么是OpenJDK,与我们要安装的JDK有什么区别呢?

从前面的简介我们知道Java是由SUN公司发明,2006年SUN公司将Java开源,此时的JDK即为OpenJDK。

OpenJDK是Java SE的开源实现,他由SUN和Java社区提供支持,2009年Oracle收购了Sun公司,自此Java的维护方之一的SUN也变成了Oracle。

关于JDK和OpenJDK的区别,可以归纳为以下几点:

  • 授权协议的不同

OpenJDK采用GPL V2协议放出,而JDK则采用JRL放出。两者协议虽然都是开放源代码的,但是在使用上的不同在于GPL V2允许在商业上使用,而JRL只允许个人研究使用。

  • OpenJDK不包含Deployment(部署)功能

部署的功能包括:Browser Plugin、Java Web Start、以及Java控制面板,这些功能在OpenJDK中是找不到的。

  • OpenJDK源代码不完整

这个很容易想到,在采用GPL协议的OpenJDK中,sun jdk的一部分源代码因为产权的问题无法开放OpenJDK使用,其中最主要的部份就是JMX中的可选元件SNMP部份的代码。因此这些不能开放的源代码将它作成plug,以供OpenJDK编译时使用,你也可以选择不要使用plug。

  • 部分源代码用开源代码替换

由于产权的问题,很多产权不是SUN的源代码被替换成一些功能相同的开源代码,比如说字体栅格化引擎,使用Free Type代替。

  • OpenJDK只包含最精简的JDK

OpenJDK不包含其他的软件包,比如Rhino Java DB JAXP……,并且可以分离的软件包也都是尽量的分离,但是这大多数都是自由软件,你可以自己下载加入。

  • 不能使用Java商标

这个很容易理解,在安装OpenJDK的机器上,输入“java -version”显示的是OpenJDK。

JDK的下载

目前OracleJDK已经更新到了JDK18,但是市面上主流的JDK还是JDK8和JDK11。

JDK8历史久且稳定,即使是在如今JDK跟新到了16的情况下,很多企业还在使用

JDK11也是非常的稳定,且引入了很多新特性,使用也是非常广泛。

  1. 输入Oracle官网下载地址:https://www.oracle.com/downloads/

  2. 往下拉,看到Developer Downloads ,点击 Java
    在这里插入图片描述

  3. 点击 Java,我们选择JDK

  1. 选择自己对应的操作系统(以Windows11操作系统为例),我们这边选择的是installer

JDK的安装

  1. 双击安装包进行安装

  2. 点击下一步

  3. 点击下一步,当然也可以点击更改自己想要的安装目录(可以默认,因为所有的语言环境变量安装都在系统中的同一个文件中)

  4. 安装完成

Java的环境变量配置

  1. 按下win键,输入环境变量

  2. 点击打开编辑系统环境变量,点击环境变量

  3. 点击“新建”,新建系统变量JAVA_HOME,点击浏览目录,值为JDK安装根目录

  4. 然后新建CLASSPATH变量,值为 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意开头以 .; 开头) ,其中的%JAVA_HOME%就是引用刚才创建的JAVA_HOME变量的值:

    然后找到Path变量并双击打开,添加JDK和JRE的bin目录:

    点击新建,在里面分别输入:

    %JAVA_HOME%\bin
    %JAVA_HOME%\jre\bin

JDK配置验证

  1. win+r,输入cmd回车,进入命令提示符窗口(win11系统可以直接右键win点击windows终端)

  2. 输入Java -version

  3. 再输入 java 看看有没有java相关信息(如果出现中文乱码,可以先输入chcp 936再输入)

  4. 最后输入javac查看是否存在相关信息

Java编译器IntelliJ IDEA的安装

1.下载IDEA

如果是联想电脑并且觉得下载慢的同学,可以试试联想商店

在官网下载IDEA,官网下载地址为:下载地址

IDEA各版本的区别:
Community
社区版,免费,但是功能有限制,Android Studio就是基于这个版本定制的。
Ultimate
终极版,收费,功能无限制。

2.安装IDEA

双击安装包开始安装,可以更改自己喜欢的安装目录

对安装中选项说明如下:

Create Desktop Shortcut:创建桌面快捷方式图标,建议勾选 64-bit launcher;

Update context menu:是否将从文件夹打开项目添加至鼠标右键,根据需要勾选;

Create Associations:关联文件格式,可以不推荐勾选,使用如 Sublime Text、EditPlus 等轻量级文本编辑器打开;

Download and install 32-bit JetBrains Runtime:下载并安装 JetBrains 的 JRE。如果已经安装了JRE,则无需勾选此项;

3.启动IDEA

进入会先让你选择界面风格,选择自己喜欢的界面风格

此时需要激活,在校大学生可以申请教育邮箱直接进行激活,官网有详细步骤。或者也可以自行查找破解的方法。

登陆后

4.使用IDEA编写Java程序

  1. 点击New Project,点击create

  2. 初始界面

  3. 创建包

  4. 创建类

  5. 编写第一个Java程序

  6. 点击绿色箭头运行

【2022软件创新实验室暑假集训】Java环境安装与基础介绍相关推荐

  1. 【2021软件创新实验室暑假集训】SpringMVC框架(设计原理、简单使用、源码探究)

    系列文章目录 20级 Java篇 [2021软件创新实验室暑假集训]计算机的起源与大致原理 [2021软件创新实验室暑假集训]Java基础(一) [2021软件创新实验室暑假集训]Java基础(二) ...

  2. 【21届软件创新实验室暑假集训】后端赛道大作业

    目录 前言 一.项目需求 1.背景介绍 2.需求简介 1.前后台(必做) 2.权限管理(必做) 3.评论设计(必做) 4.用户注册(必做) 5.多方式登录(选做) 6.成员信息管理(必做) 7.博文模 ...

  3. 【2021软件创新实验室暑假集训,小白勿进

    我先摘一段官方的解释: Spring Boot makes it easy to create stand-alone, production-grade Spring based Applicati ...

  4. 【软件创新实验室2021年寒假集训】Java后端开发漫谈及感悟分享

    系列文章目录 [软件创新实验室2021年寒假集训]汇总篇 20级Java培训 第一天:[软件创新实验室2021年寒假集训]Java技术培训--Java前置知识学习 第二天:Java基础(一) 第三天: ...

  5. 【软件创新实验室2021年暑假集训】Java技术培训——Java前置知识学习

    [软件创新实验室2021年暑假集训]Java技术培训--Java前置知识学习 文章目录 [软件创新实验室2021年暑假集训]Java技术培训--Java前置知识学习 前言 一.了解计算机 1.计算机的 ...

  6. 【软件创新实验室2021年寒假集训】Java技术培训——Java前置知识学习

    系列文章目录 [软件创新实验室2021年寒假集训]汇总篇 20级Java培训 第一天:[软件创新实验室2021年寒假集训]Java技术培训--Java前置知识学习 第二天:Java基础(一) 第三天: ...

  7. 软件创新实验室:Spring框架

    文章目录 前言 初识Spring 简介 组成 创建 配置说明 别名 Bean的配置 import 思考 IOC 本质 理论推导 创建对象方式 1. 使用无参构造创建对象(默认) 2. 使用有参构造创建 ...

  8. 软件创新实验室:MySQL数据库与简单SQL语句使用

    文章目录 前言 简介 特点 SQL DDL:操作数据库.表 DML:增删改表中数据 DQL:查询表中的记录 后记 拓展 范式 第一范式 1NF 第二范式 2NF 第三范式 3NF B+树 节点结构 插 ...

  9. 企企通荣登「2022软件创新企业100强」,采购供应链数字化领域唯一上榜

    近日,互联网周刊.德本咨询.eNet研究院联合发布「2022软件创新企业100强」榜单,企企通凭借在采购数字化领域的前沿性和创新性,斩获「2022软件创新企业100强」,也是唯一一家上榜的采购供应链数 ...

最新文章

  1. PCL深度图像(1)
  2. 再迎利好,BCH开发团队BU融合石墨烯区块传播技术
  3. 贝叶斯统计:信噪对偶与Dawid定理
  4. dxf转pdf linux,4个最好的PDF转DXF格式的在线转换器
  5. mysql 禁用密码规则校验
  6. css 一些 常用布局
  7. rsem比对_RSEM方法比对和表达量计算
  8. eclipse maven配置_Gradle学习记录015 声明仓库,检查依赖,管理依赖的配置
  9. python遍历文件目录_python遍历文件夹及其子目录
  10. 基于Chrome插件的微博超话自动签到
  11. 倍福--检测和扫描ethercat从站状态
  12. word 宏命令 表头与图名的设置
  13. x86 单线并发多拨_OpenWrt ADSL单线多拨,负载均衡(仅供参考)
  14. ABB机器人动作监控和无动作执行的使用
  15. 想知道有哪些缩小视频大小的软件?这几个压缩软件你该知道
  16. maven能帮我们做什么
  17. c语言 socket send,C语言中send()函数和sendto()函数的使用方法
  18. 前端css 页面高斯模糊效果
  19. async.js 学习教程(一)
  20. 健身笔记(六)---健身四个月后总结

热门文章

  1. 用Matlab创建BP神经网络
  2. QTdesigner前后端交互--结节算法实战
  3. js 图片下载(不是直接在页面打开图片)
  4. arduino与hcsr04_基于Arduino的超声波传感器HC-SR04
  5. 群晖DSM PT软件安装记录一:安装transmission
  6. mysql 视图 中文_Mysql视图-WEB资讯专栏-DMOZ中文网站分类目录-免费收录各类优秀网站的中文网站目录....
  7. 1404 数根(函数专题)
  8. ubuntu删除错误的ATI驱动
  9. 绿盟科技技术大会 TechWorld 2016完美谢幕
  10. Lumerical官方案例、FDTD时域有限差分法仿真学习(十四)——超透镜(Metalens)