初识 java(简单易懂入门篇)
引言
java语言是Sun公司在1990年由James Gosling创建的(Sun公司现已被Oracle甲骨文公司收购),在1995年才公布,java创始人James Gosling通过C++创造了java,所以java拥有了C++语言的优点,并去掉了C++中难以操作的指针、多继承等概念;相对于C++来说,java是一门纯粹的面向对象语言,大大简化了编程开发的难度,所以java在当下应用十分的广泛;
因为java是面向对象语言的代表,所以学习java更重要的地方是学习面向对象思想,当下开发离不开面向对象,不管以后是否用java,通过java学习面向对象是一个非常不错的选择;
java三大版本
java在发展中不断更新,主要分为了三大块
javaSE 标准版
一般用于java应用的开发,也是学习java的起点,
javaEE 企业版
javaEE是在javaSE的基础上构建的,主要应用于企业的网站开发、应用等;
javaME 微型版
一般是面向嵌入式或移动设备等应用的开发;
java语言特点
sun公司对java的描述是:“Java is a simple,object-oriented, distributed, interpreted, robust, secure, architecture neutral, portable, high-performance, multihreaded, and dynamic language”
“Java 是一门简单的,面向对象,分布式,解释性,健壮的,安全的,结构中立的,便捷的,高性能的,多线程的,动态的语言”
可以看出来优点是很多的,下面说几个主要的特点;
- 简单性:学习java一般都知道,java没有了c/c++里的指针,这就使开发者不再需要使用指针进行复杂的操作,多继承的消失也让java更加简洁;
- 健壮性:当需要对内存进学操作时,c/c++程序员需要自己创建指针并且自己释放指针内存,说着很容易,但是一旦真正操作起来,一个指针在几个函数里面到处跑,到最后可能就会忘记释放内存造成内存泄露,然后程序就会出现各种问题;而在java中就不会出现这个问题,因为java有自动垃圾回收机制(GC 机制),它时刻监控着你的内存使用,当你内存达到一定程度时会自动帮你清理,让你的内存状态保持最佳;
- 跨平台性:如果用c/c++语言在windows开发的大型的程序一旦换到mac os或着linux系统就可能无法运行了;但是java一旦在任意一个操作系统中编译后,不管去哪一个系统都可以正常运行;具体原理我们在下面分析;
java的其它特性像面向对象、多线程等这里就不介绍了;
java虽然相对于c/c++有了这些优点,同样也有一些不足的地方;
就拿指针来说,虽然java没有了指针,操作起来更简单,但是也正是没有了指针,程序员就无法像使用c/c++一样直接去操作内存,所以相同情况下,使用指针的效率会更高一些;
其实java和c/c++对内存的的操作就像我们平时吃饭,c/c++是可以自己做饭的,而java就需要点外卖,所以你自己做的饭你想怎么弄都可以,操作性更高了,而java就只好买了不管怎么样只能去吃;但是c/c++做饭时就会有做成黑暗料理的风险,而java就不用担心这个;吃完饭后c/c++还需要刷碗(释放内存),而java就什么也不用管就有人自己收拾了;
ps:个人理解,如果有错误欢迎指出
JDK、JRE、JVM
我开始接触这三个名词的时候一脸懵,后来详细理了一下它们之间的关系就明白了,这里就先分别介绍一下:
JDK:java开发工具箱
JRE:java运行环境
JVM:java虚拟机
- JDK:JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK);如果你要开发java程序这个是必不可少的,安装后内部就会有一个JRE和 java的开发工具,因为你既然要开发软件就一定需要运行测试,所以JRE也就自己安装了;
- JRE:JRE(Java Runtime Environment,Java 运行环境),运行 JAVA程序所必须的环境的集合,包含 JVM 和 Java 核心类库,这里就要提一下了,如果你只需要运行一个开发好的程序,那么只安装JRE就可以了;
- JVM:JVM 是 Java Virtual Machine(Java 虚拟机),JVM 是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的,JVM不能单独安装,它包含在JRE或者JDK中。
所以他们三者的关系可以归类为:
JDK包含JRE和java开发工具
JRE包含JVM和Java 核心类库
关系如图:
上面再说java特性的时候说过跨平台性,这里就来说一下一个java程序是如何实现跨平台的;
Java 程序运行的时候并不是直接运行在操作系统上面的,而是在操作系统上先安装了一个 JVM,把 Java 程序放到了 JVM 当中运行,JVM 屏蔽了各操作系统之间的差异,这样就完成了跨平台。
就可以理解为:JVM就相当于一个翻译家,它把java程序翻译过来使不同的操作系统都可以运行这个程序;
所以不同的系统也对应着不同的JVM,下面画一个图跟有助于理解跨平台:
所以可以看出来java程序运行路线,下图结合起来更好理解:
所以不同的操作系统需要装不同版本的JVM,一般我们作为开发者直接安装一个JDK就可以了,当我们把开发好的软件给客户演示时只装一个JRE就行;
总结
这些就是学习java前需要了解的一些基本内容,了解了这些在以后写代码时才可以更清楚的理解java的特点和运行原理;同样也建议学习一点DOS基本的命令,这样在java学习时会更加轻松;
ps:如果文章内容有错误欢迎指出!
初识 java(简单易懂入门篇)相关推荐
- Java新手小白入门篇 Java基础(一)
Java新手小白入门篇 Java基础 Java新手小白入门篇 Java基础(知识点体系汇总) Java新手小白入门篇 Java基础(一) Java新手小白入门篇 Java基础(二) Java新手小白入 ...
- 初识c语言(入门篇)
目录 一.简单介绍C语言 二.认识一个简单的C程序 三.数据类型 四.常量.变量 五.字符串.转义字符和注释 六.选择语句 七.循环语句 八.函数 九.数组 十.关键字 十一.指针 一.简单介绍C语言 ...
- 如何5分钟秒懂Java之基础入门篇 第一个hello word
本来其实想讲一下这个Java基础入门系列_JDK的安装,后来想想还是算了.毕竟这就是相当于一个给电脑装一个APP,类似这么个流程. 还想说一个这个JDK一个必须要知道的知识点,那就是JDK的bin目录 ...
- 教你学java_教妹学Java:Spring 入门篇
你好呀,我是沉默王二,一个和黄家驹一样身高,刘德华一样颜值的程序员(管你信不信呢).从两位偶像的年纪上,你就可以断定我的码龄至少在 10 年以上,但实话实说,我一直坚信自己只有 18 岁,因为我有一颗 ...
- Java Stream API入门篇
转自:https://www.cnblogs.com/CarpenterLee/p/6545321.html 你可能没意识到Java对函数式编程的重视程度,看看Java 8加入函数式编程扩充多少功能就 ...
- Java新手小白入门篇 Java项目的构建
前言 之前我们已经讲解了 JDK的下载安装及配置操作 和 IDEA的下载和安装 ,学习Java的准备工作我们已经做好了,下面我们需要做的就是创建项目,并且写我们的 Java 程序了 一.如何使用IDE ...
- Java新手小白入门篇 JDK安装及环境变量配置(超详细)
前言 学习Java,必备的就是JDK,所以我们必须得下载安装JDK,才能学习Java,下面我们会介绍 JDK是什么,如何安装并配置. 一.JDK简介 1.名词解释 JVM (Java Virtual ...
- 详解Java反射机制------入门篇
一.什么叫Java反射机制? Java中的反射机制是指在运行状态中,对于任意一个类,能够动态获取这个类中的属性和方法:对于任意一个对象,都能够任意调用它的属性和方法.这种动态获取类的信息以及动态调用对 ...
- 【Java编程进阶】Java语言基础入门篇
从今天开始,就要写Java编程进阶从入门到精通系列的文章啦!希望大家学习完都可以找到心仪的工作,在自己热爱的岗位上闪闪发光! 推荐学习专栏:Java 编程进阶之路[从入门到精通] 文章目录 一. 第一 ...
最新文章
- PHP 利用PHPExcel到处数据到Excel;还有导出数据乱码的解决方案。
- 华为鸿蒙系统确认适配高通,华为鸿蒙系统确认适配高通/联发科手机!曝OV魅族有意采用...
- Caliburn.Micro学习笔记(三)----事件聚合IEventAggregator和 IhandleT
- PyQt5应用与实践
- 在Windows系统中构建还原ASP.NET Core 源码
- 前端学习(2598):按钮控制操作
- 推荐系统--安全联邦矩阵分解(7)
- python建模仿真 matlab_清华大学出版社-图书详情-《仿真建模与MATLAB实用教程》
- python报考软考哪个比较好_软考高级考哪个好?哪个比较热门?
- 算法系列之选择排序算法
- 有人说,互联网电商把1000个实体店老板赚的钱,让10个互联网电商赚走了
- Python中替换元素
- [cocos2d-x]动作+场景切换
- 虚拟打印机 服务器,cimfax64位系统虚拟打印机安装.pdf
- 自然辩证法2018版_自然辩证法-2018版课后思考题答案
- c语言布丰投针源码,布丰投针数学分析及实验设计(原创).pdf
- linux limits.conf 生效,limits.conf不生效问题
- python 操作word页眉表格_pythondocx读写word文档:插入图片和表格,设置表格样式、章节、页眉、页脚等,Pythondocx,Word...
- 【智能电视必装软件】小鲸电视、hdp直播国庆假期经典好剧随心看
- 论文阅读笔记之Replacing Mobile Camera ISP with a Single Deep Learning Model
热门文章
- 案例 | 铅酸蓄电池精细维护
- 未来的数据中心(二)
- c语言程序开发中连接是,C语言中等待socket连接和对socket定位的方法
- mysql 数据目录迁移_MySQL数据库数据文件路径迁移步骤
- ML之Cosin:基于输入图片RGB均值化转为单向vector利用Cosin(余弦相似度)算法进行判别
- 快速认识网络爬虫与Scrapy网络爬虫框架
- JAVA_OA(bug篇)(一):SpringMVC的bug1
- 《疯狂Java讲义》5
- C/C++调试:gdbserver的简单使用
- 作业三--简单四则运算