Java作为编程语言, 甚至超出了语言的范畴, 成为一种开发平台, 一种开发规范.

Java语言相关的JavaEE规范里, 包含了时下最流行的各种软件工程理念, 学习Java相当于系统的学习了软件开发的相关知识, 而不仅仅是完成了一门编程语言.

1.1 Java语言的发展史

Java是由Sun Microsystems公司于1995年5月23日推出的Java面向对象程序设计语言和Java平台的总称. 由James Gosling(詹姆斯·高斯林)和同事们共同研发,并在1995年正式推出.

Oak ---> Java;    Sun ---> Oracle

版本 -> 1.2, 1.4, 1.5, 1.6, java8, java10

历史上最重要的版本: JDK1.2

  1998年12月, JDK1.2发布, 一同发布的还有JSP/Servlet、EJB等规范; 并将Java分成了下面三个版本

  1.JavaSE: 整个Java技术的核心和基础, 它是J2ME和J2EE的编程基础

  2.JavaME: 主要控制移动设备和信息家电等有限存储设备

  3.JavaEE: 提供了企业应用开发相关的解决方案

JDK历史上最成熟的版本: JDK1.4

  2002年2月, JDK1.4发布, 大量基于Java语言的开源框架涌现(Struts Hibernate Spring等); 大量应用服务器开始涌现(Weblogic WebSphere JBoss等)

JDK1.5

  2004年10月, JDK1.5发布, J2EE更名为JavaEE

  JDK1.5增加了泛型, 增强for循环, 可变参数, 注释, 自动拆装箱等功能

JDK1.6

  2006年4月

1.2 Java的竞争对手及各自优势

  Java是面向对象编程语言, 与Java类似的语言有C#, Ruby, Python等

Python的简介和优势

2017年左右因为人工智能的发展Python的知名度开始迅速升高, 初始Python了解不是很多, 自己总结一下( 进不去这个行业, 也只能了解一点皮毛而已 )
Python的岗位: PythonWeb开发, 自动化运维, 自动化测试, 爬虫, 数据挖掘, 数据分析, 人工智能(我觉得C才是重点)
Python的缺点: 对于以上能实现的领域来说, Python可能会偏重于使用者的数学、算法等能力
Python的框架: Flask, Django
个人分析: 2018-2019年, 学历至少统招本科, 且最好是数学或计算机相关专业, 否则找工作还是很困难的, 另外PythonWeb开发的面试机会大约为Java开发的十分之一

1.3 Java程序运行机制

  Java语言是一种特殊的高级语言, 它既具有解释型语言的特性, 也具编译型语言的特性, 因为Java程序要经过编译和解释两个步骤.

计算机高级语言的执行方式: 编译型语言和解释型语言

编译型语言: 源码一次性编译为该平台硬件执行的机器码(如.c --> .exe)

    移植性差, 机器码和平台相关, 需要根据源码在不同平台生成相应的机器码

解释型语言: 源码, 编译生成字节码文件, 解释器将字节码解释为机器码执行

    跨平台性强, 处理速度慢, 字节码文件通过不同平台的解释器处理得到的效果是相同的 

Java程序的执行原理

1.4 开发Java的准备

  需要准备如下环境: 编辑器(编写源码程序),   JDK(编译程序, 解释并执行java程序)

编辑器: 学习前期可以使用记事本/EditPlus/Notpad++

JDK/JRE/JVM

JRE: Java运行时环境( 包含Java开发工具包, JRE )

JDK: Java开发工具包( 包含JVM )

JVM是一个抽象的计算机, 和实际的计算机一样, 它具有指令集并使用不同的存储区域. 它负责执行指令, 管理数据/内存/寄存器
JVM的相关细节( 指令集, 寄存器, 类文件的格式, 栈, 垃圾回收堆, 存储区 )

环境搭建(JDK)

1.安装JDK

    Java分为三个版本,这三个版本都存在对应的JDK, 如果是进行JavaEE开发,就选择JavaEE的JDK

    傻瓜式安装, 注意(1)安装路径不能含有空格等特殊字符, (2)不需要安装独立的JRE(安装快结束时会有安装独立JRE的提示)
2.配置环境变量 JAVA_HOME D:\software\java\jdk\jdk1.8.0_162_001 path %JAVA_HOME%\bin; 3.检查环境变量
C:\Users\Administrator> java -version
java version "1.8.0_162"Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
C:\Users\Administrator> javac -version
javac 1.8.0_162

1.5 第一个Java程序

1. 编写Java源代码( Hello.java )

public class HelloWorld {
//定义一个主函数, 作为程序的入口
public static void main(String[] args) {
//打印一个字符串 HelloWorld
System.out.println("HelloWorld");
}
}

2. 编译Java程序

D:\code\fjk\java\se001\day001>javac HelloWorld.java

执行后生成HelloWorld.class

3. 运行Java程序

D:\code\fjk\java\se001\day001>java HelloWorld

执行后输出: HelloWorld

4. 根据CLASSPATH环境变量定位类

暂时未用到过, 忽略

1.6 Java程序的基本规则

1. Java程序的组织形式

Java程序是一种纯粹面向对象的设计语言, 因此Java程序必须以类的形式存在, 类是Java程序的最小单位.

class HelloWorld {
//最简单的Java程序
}

2. Java源文件的命名规则

后缀名必须是.java

文件名必须与public修饰的类的类名相同

实际开发中, 一个有且只有一个public类, 且该类类名和文件名相同

1.7 垃圾回收机制

  Java语言不需要程序员直接控制内存的回收, Java程序的内存分配和回收都是由JRE在后台自动进行的.

  JRE会负责回收那些不再使用的内存, 这种机制成为垃圾回收(Garbage Collectio, 也成为GC).

1.8 本章小结

  本章简单介绍了Java的发展史, Java的运行机制, Java的垃圾回收机制.

本章练习

  1. 搭建自己的Java开发环境

  2. 用Java语言编写HelloWorld

Java Part 001( 01_01_Java概述 )的更多相关文章

  1. 【java基础学习001】概述

    001.1    一个简单的Java程序 public class hello { public static void main(String[] args) { System.out.printl ...

  2. Java NIO:NIO概述

    Java NIO:NIO概述 在上一篇博文中讲述了几种IO模型,现在我们开始进入Java NIO编程主题.NIO是Java 4里面提供的新的API,目的是用来解决传统IO的问题.本文下面分别从Java ...

  3. java 复习001

    java 复习001 比较随意的记录下我的java复习笔记 ArrayList 内存扩展方法 分配一片更大的内存空间,复制原有的数据到新的内存中,让引用指向新的内存地址 ArrayList在内存不够时 ...

  4. (转载)Java NIO:NIO概述(一)

    Java NIO:NIO概述 在上一篇博文中讲述了几种IO模型,现在我们开始进入Java NIO编程主题.NIO是Java 4里面提供的新的API,目的是用来解决传统IO的问题.本文下面分别从Java ...

  5. JAVA面向对象-----内部类的概述

    JAVA面向对象-–内部类的概述s 将类定义在另一个类的内部则成为内部类.其实就是类定义的位置发生了变化. 在一个类中,定义在类中的叫成员变量,定义在函数中的叫成员函数,那么根据类定义的位置也可以分为 ...

  6. Java Learning 001 新建一个Java工程 HelloWorld程序

    Java Learning 001 新建一个Java工程 HelloWorld程序 Step 1 . 在Eclipse 软件里,点击: File -> New -> Java Projec ...

  7. Java性能调优概述

    目录 Java性能调优概述 性能优化有风险和弊端,性能调优必须有明确的目标,不要为了调优而调优!!!盲目调优,风险远大于收益!!! 程序性能的主要表现点 执行速度:程序的反映是否迅速,响应时间是否足够 ...

  8. Java包的基本概述

    第七章 7.1 包的基本概述 起因: 在我们设计一个程序的时候(尤其是多人合作),会写一些类来实现功能,但是往往会有重名的现象发生,为了解决这个问题,则专门设计了包.(还有其他作用,下述) 简单理解: ...

  9. IBM Developer:Java 9 新特性概述

    Author: 成富 Date: Dec 28, 2017 Category: IBM-Developer (20) Tags: Java (27) 原文地址:https://www.ibm.com/ ...

随机推荐

  1. .Net Core Serverless初体验

    什么是Serverless Serverless 是一个当今软件世界中比较新的话题.它并没有一个普遍公认的权威定义,每个人每个企业对它的解释可能都有不同,而 Serverless 正是在这种情况下不断 ...

  2. redis系列之------字典

    前言 字典, 又称符号表(symbol table).关联数组(associative array)或者映射(map), 是一种用于保存键值对(key-value pair)的抽象数据结构. 在字典中 ...

  3. 06-01 DeepLearning-图像识别

    目录 深度学习-图像识别 一.人脸定位 二.手工提取特征的图像分类 2.1 识图认物 2.2 传统分类系统的特征提取 2.3 计算机眼中的图像 2.4 什么是图像特征? 2.5 卷积运算 2.6 利用 ...

  4. 从零学习基于Python的RobotFramework自动化

    从零学习基于Python的RobotFramework自动化 一.        Python基础 1)      版本差异 版本 编码 语法 其他 2.X ASCII try: raise Type ...

  5. HikariCP重要参数配置

    概述 HikariCP是Spring Framework 5.0的默认数据库连接池,这得益于他的高性能.但是如果配置不当,数据库连接池也可能因影响到系统性能. 重要参数 maximum-pool-si ...

  6. drf框架中分页组件

    drf框架中分页组件 普通分页(最常用) 自定制分页类 pagination.py from rest_framework.pagination import PageNumberPagination ...

  7. 二、docker 镜像容器常用操作(让我们用docker 溜得飞起)

    前言 上篇讲了我们如何安装docker,现在该我们一展拳脚的时候了.接下来让我们一起学习一下docker常见的操作,让我们能够会使用 docker. 基本概念 在讲使用之前,还是先将一下docker ...

  8. 内网渗透bypassuac和smb溢出

    对内网渗透需要渗透的目标主机处于跨网段和uac限制的情况做一个渗透记录 环境大致如下 拥有shell权限的win7(有uac限制,处于双网段) 和同win7同一网段下暂时无权限的靶机xp 先对有权限的 ...

  9. Linux系统基础

    Linux系统基础 目录   简介 0x01 Linux文件与目录管理 0x02 Linux系统用户以及用户组管理 0x03文档的压缩与打包 0x04 apt安装软件 0x05 进程管理 标签 Lin ...

  10. 用JavaScript制作banner轮播图

    JavaScript_banner轮播图 让我们一起来学习一下用js怎么实现banner轮播图呢? 直接看代码: <!DOCTYPE html> <html> <head ...