引言

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 是一门简单的,面向对象,分布式,解释性,健壮的,安全的,结构中立的,便捷的,高性能的,多线程的,动态的语言”
可以看出来优点是很多的,下面说几个主要的特点;

  1. 简单性:学习java一般都知道,java没有了c/c++里的指针,这就使开发者不再需要使用指针进行复杂的操作,多继承的消失也让java更加简洁;
  2. 健壮性:当需要对内存进学操作时,c/c++程序员需要自己创建指针并且自己释放指针内存,说着很容易,但是一旦真正操作起来,一个指针在几个函数里面到处跑,到最后可能就会忘记释放内存造成内存泄露,然后程序就会出现各种问题;而在java中就不会出现这个问题,因为java有自动垃圾回收机制(GC 机制),它时刻监控着你的内存使用,当你内存达到一定程度时会自动帮你清理,让你的内存状态保持最佳;
  3. 跨平台性:如果用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虚拟机

  1. JDK:JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK);如果你要开发java程序这个是必不可少的,安装后内部就会有一个JREjava的开发工具,因为你既然要开发软件就一定需要运行测试,所以JRE也就自己安装了;
  2. JRE:JRE(Java Runtime Environment,Java 运行环境),运行 JAVA程序所必须的环境的集合,包含 JVMJava 核心类库,这里就要提一下了,如果你只需要运行一个开发好的程序,那么只安装JRE就可以了;
  3. 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(简单易懂入门篇)相关推荐

  1. Java新手小白入门篇 Java基础(一)

    Java新手小白入门篇 Java基础 Java新手小白入门篇 Java基础(知识点体系汇总) Java新手小白入门篇 Java基础(一) Java新手小白入门篇 Java基础(二) Java新手小白入 ...

  2. 初识c语言(入门篇)

    目录 一.简单介绍C语言 二.认识一个简单的C程序 三.数据类型 四.常量.变量 五.字符串.转义字符和注释 六.选择语句 七.循环语句 八.函数 九.数组 十.关键字 十一.指针 一.简单介绍C语言 ...

  3. 如何5分钟秒懂Java之基础入门篇 第一个hello word

    本来其实想讲一下这个Java基础入门系列_JDK的安装,后来想想还是算了.毕竟这就是相当于一个给电脑装一个APP,类似这么个流程. 还想说一个这个JDK一个必须要知道的知识点,那就是JDK的bin目录 ...

  4. 教你学java_教妹学Java:Spring 入门篇

    你好呀,我是沉默王二,一个和黄家驹一样身高,刘德华一样颜值的程序员(管你信不信呢).从两位偶像的年纪上,你就可以断定我的码龄至少在 10 年以上,但实话实说,我一直坚信自己只有 18 岁,因为我有一颗 ...

  5. Java Stream API入门篇

    转自:https://www.cnblogs.com/CarpenterLee/p/6545321.html 你可能没意识到Java对函数式编程的重视程度,看看Java 8加入函数式编程扩充多少功能就 ...

  6. Java新手小白入门篇 Java项目的构建

    前言 之前我们已经讲解了 JDK的下载安装及配置操作 和 IDEA的下载和安装 ,学习Java的准备工作我们已经做好了,下面我们需要做的就是创建项目,并且写我们的 Java 程序了 一.如何使用IDE ...

  7. Java新手小白入门篇 JDK安装及环境变量配置(超详细)

    前言 学习Java,必备的就是JDK,所以我们必须得下载安装JDK,才能学习Java,下面我们会介绍 JDK是什么,如何安装并配置. 一.JDK简介 1.名词解释 JVM (Java Virtual ...

  8. 详解Java反射机制------入门篇

    一.什么叫Java反射机制? Java中的反射机制是指在运行状态中,对于任意一个类,能够动态获取这个类中的属性和方法:对于任意一个对象,都能够任意调用它的属性和方法.这种动态获取类的信息以及动态调用对 ...

  9. 【Java编程进阶】Java语言基础入门篇

    从今天开始,就要写Java编程进阶从入门到精通系列的文章啦!希望大家学习完都可以找到心仪的工作,在自己热爱的岗位上闪闪发光! 推荐学习专栏:Java 编程进阶之路[从入门到精通] 文章目录 一. 第一 ...

最新文章

  1. PHP 利用PHPExcel到处数据到Excel;还有导出数据乱码的解决方案。
  2. 华为鸿蒙系统确认适配高通,华为鸿蒙系统确认适配高通/联发科手机!曝OV魅族有意采用...
  3. Caliburn.Micro学习笔记(三)----事件聚合IEventAggregator和 IhandleT
  4. PyQt5应用与实践
  5. 在Windows系统中构建还原ASP.NET Core 源码
  6. 前端学习(2598):按钮控制操作
  7. 推荐系统--安全联邦矩阵分解(7)
  8. python建模仿真 matlab_清华大学出版社-图书详情-《仿真建模与MATLAB实用教程》
  9. python报考软考哪个比较好_软考高级考哪个好?哪个比较热门?
  10. 算法系列之选择排序算法
  11. 有人说,互联网电商把1000个实体店老板赚的钱,让10个互联网电商赚走了
  12. Python中替换元素
  13. [cocos2d-x]动作+场景切换
  14. 虚拟打印机 服务器,cimfax64位系统虚拟打印机安装.pdf
  15. 自然辩证法2018版_自然辩证法-2018版课后思考题答案
  16. c语言布丰投针源码,布丰投针数学分析及实验设计(原创).pdf
  17. linux limits.conf 生效,limits.conf不生效问题
  18. python 操作word页眉表格_pythondocx读写word文档:插入图片和表格,设置表格样式、章节、页眉、页脚等,Pythondocx,Word...
  19. 【智能电视必装软件】小鲸电视、hdp直播国庆假期经典好剧随心看
  20. 论文阅读笔记之Replacing Mobile Camera ISP with a Single Deep Learning Model

热门文章

  1. 案例 | 铅酸蓄电池精细维护
  2. 未来的数据中心(二)
  3. c语言程序开发中连接是,C语言中等待socket连接和对socket定位的方法
  4. mysql 数据目录迁移_MySQL数据库数据文件路径迁移步骤
  5. ML之Cosin:基于输入图片RGB均值化转为单向vector利用Cosin(余弦相似度)算法进行判别
  6. 快速认识网络爬虫与Scrapy网络爬虫框架
  7. JAVA_OA(bug篇)(一):SpringMVC的bug1
  8. 《疯狂Java讲义》5
  9. C/C++调试:gdbserver的简单使用
  10. 作业三--简单四则运算