专栏首页蛮三刀的后端开发专栏Java学习笔记(一)——Java介绍

Java学习笔记(一)——Java介绍

本笔记大部分内容来自:微学苑

Java概述

Java简介

可以负责任的告诉你,Java 目前的主要应用方向是Web开发和Android开发,大部分IT公司招聘的Java程序员也是从事这两方面的工作。

Java虚拟机

介绍

JVM是一个”桥梁“,是一个”中间件“,是实现跨平台的关键,Java代码首先被编译成字节码文件,再由JVM将字节码文件翻译成机器语言,从而达到运行Java程序的目的。 注意:编译的结果不是生成机器码,而是生成字节码,字节码不能直接运行,必须通过JVM翻译成机器码才能运行。不同平台下编译生成的字节码是一样的,但是由JVM翻译成的机器码却不一样。

即使你将Java程序打包成可执行文件(例如 .exe),仍然需要JVM的支持。 注意:跨平台的是Java程序,不是JVM。JVM是用C/C++开发的,是编译后的机器码,不能跨平台,不同平台下需要安装不同版本的JVM。

性能

然而,JVM 有一个选项,可以将使用最频繁的字节码翻译成机器码并保存,这一过程被称为即时编译。这种方式确实很有效,致使微软的 .NET 平台也使用了虚拟机。

现在的及时编译器已经相当出色,甚至成了传统编译器的竞争对手,某些情况下甚至超过了传统编译器,原因是JVM可以监控运行时信息。例如,即时编译器可以监控使用频率高的代码并进行优化,可以消除函数调用(即“内嵌”)。

种种原因,注定了Java客户端不利于推向市场,让普通用户接受。不过话又说回来,客户端开发也不是Java的初衷,Java最初是面向嵌入式的,却随着互联网的兴起而快速成长,在Web开发上大显身手。

版本

J2SE

J2SE包含了Java的核心类库,例如数据库连接、接口定义、输入/输出、网络编程等。

J2EE

通常所说的JSP开发就是J2EE的一部分。 J2EE包含J2SE中的类,还包含用于开发企业级应用的类,例如EJB、servlet、JSP、XML、事务控制等。

J2ME

J2ME 只包含J2SE中的一部分类,受平台影响比较大,主要用于嵌入式系统和移动平台的开发,例如呼机、智能卡、手机(功能机)、机顶盒等。 注意:Android手机有自己的开发组件,不使用J2ME进行开发。

开发环境JDK

进入环境变量配置窗口,在“用户变量”中,设置3项属性,JAVA_HOME、PATH、CLASSPATH(大小写无所谓),若已存在则点击“编辑”,不存在则点击“新建”:

  • JAVA_HOME:设为JDK的安装路径(如D:\Program Files\jdk1.7.0_71),此路径下包括lib,bin,jre等文件夹(此变量最好设置,因为以后运行tomcat,eclipse等都需要依靠此变量)。
  • Path:使得系统可以在任何路径下识别java命令,设为:%JAVA_HOME%\bin。%JAVA_HOME%就是引用前面指定的JAVA_HOME变量。
  • CLASSPATH:Java运行环境加载类的路径,只有类在classpath中,才能被识别和加载,设为 .;%JAVA_HOME%\lib(注意前面的点号(.),点号表示当前路径)。

常用包

包名

说明

java.lang

该包提供了Java编程的基础类,例如 Object、Math、String、StringBuffer、System、Thread等,不使用该包就很难编写Java代码了。

java.util

该包提供了包含集合框架、遗留的集合类、事件模型、日期和时间实施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。

java.io

该包通过文件系统、数据流和序列化提供系统的输入与输出。

java.net

该包提供实现网络应用与开发的类。

java.sql

该包提供了使用Java语言访问并处理存储在数据源(通常是一个关系型数据库)中的数据API。

java.awt javax.swing

这两个包提供了GUI设计与开发的类。java.awt包提供了创建界面和绘制图形图像的所有类,而javax.swing包提供了一组“轻量级”的组件,尽量让这些组件在所有平台上的工作方式相同。

java.text

提供了与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。

import

Java 编译器默认为所有的 Java 程序导入了 JDK 的 java.lang 包中所有的类(import java.lang.*;),其中定义了一些常用类,如 System、String、Object、Math 等,因此我们可以直接使用这些类而不必显式导入。但是使用其他类必须先导入。

Java 运行环境将依次到下面的路径寻找并载入字节码文件 Test.class:

  • .p1\Test.class(”.”表示当前路径)
  • D:\Program Files\jdk1.7.0_71\lib\p1\Test.class

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [Leetcode][python]Reorder List/重排链表

    将单向链表L0→L1→…→Ln-1→Ln转化为L0→Ln→L1→Ln-1→L2→Ln-2→…的形式,也就是从头部取一个节点,从尾部取一个节点,直到将原链表转化成...

    后端技术漫谈
  • [Leetcode][python]Merge Two Sorted Lists/合并两个有序链表

    已开始将其当成两个list,去分别修改其值,但其实应该修改的是链表的指针。 并且还有一个值得注意的是dummy node,见总结。

    后端技术漫谈
  • [Leetcode][python]Swap Nodes in Pairs/两两交换链表中的节点

    交换链表中相邻的两个元素。 注意第一个节点与第二个节点要交换位置,而第二个节点不用与第三个节点交换位置。 注意点: 不允许修改节点的值 ...

    后端技术漫谈
  • Java基础-Java跨平台原理

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    cwl_java
  • Java JDK 11:现在可以使用所有新功能

    Java Development Kit(JDK)11现已普遍可用,可供生产使用,提高了工作效率,并提供了实现HTTP / 2的HTTP客户端API。

    gemron的空间
  • Windows上Java的环境变量配置

    对于开发者来说,Java是电脑上必备安装的软件。安装Java不单单只是安装jdk就可以,还要配置Java的环境变量。这篇文章主要是介绍如何配置Java的环境变量...

    JerryC
  • Java虚拟机工作原理之JVM用到的3大计算机核心功能,重点是方法调用

    JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模...

    用户1289394
  • Java工程师学习指南第6部分:深入理解JVM虚拟机

    本文整理了微信公众号【Java技术江湖】发表和转载过的JVM虚拟机相关优质文章,想看到更多Java技术文章,就赶紧关注本公众号吧吧。

    Java技术江湖
  • jvm内存模型

    JVM定义了若干个程序执行期间使用的数据区域。这个区域里的一些数据在JVM启动的时候创建,在JVM退出的时候销毁。而其他的数据依赖于每一个线程,在线程创建时创...

    lyb-geek
  • Java代码审计入门篇

    Java这个语言相对于PHP来说还是比较复杂的,所以一开始接触到Java源码审计的时候会遇到一些关于环境和配置上一些困难,本文记录斗哥在开始去审计Java代码的...

    漏斗社区

扫码关注云+社区

领取腾讯云代金券