Java编程介绍以及学习路线

news2024/9/28 11:18:02

1.Java的起源

        Java源自Sun公司的一个叫Green的项目,其原先的目的是为家用电子消费产品开发一个分布式代码系统,这样就可以将通信和控制信息发给电冰箱、电视机、烤面包机等家用电器,对它们进行控制和信息交流。最初Green项目的工程师们准备采用C++,但C++比较复杂,最后经过裁剪、优化和创新,1990年,由Sun公司的James Gosling(詹姆斯·高斯林)领导的小组基于C++开发了一种与平台无关的新语言Oak(Java的前身)。Oak的取名源于Gosling办公室外有一棵枝繁叶茂的橡树,这在硅谷是一种很常见的树。

        1995年1月,Oak被改名为Java,这是因为Oak是一家显卡制造商已注册的商标。Oak若想发展壮大,法律层面上的改名势在必行。Java是印度尼西亚“爪哇(注:Java的音译)”岛的英文名称,该岛因盛产咖啡而闻名。这就是Java的官方商标是一杯浓郁的咖啡的原因。Sun随后开发了HotJava浏览器,得到了Sun公司时任首席执行官Scott McNealy的支持,触发了Java进军Internet。

2.Java的简史

        从Java的第一个版本诞生到现在已经有二十余年的时间,白驹过隙,沧海桑田,转眼已过了四分之一个世纪,我们看到JDK的版本已经发展到了JDK 13。这二十多年里诞生过无数与Java相关的产品、技术与标准。现在让我们走入时间隧道,从孕育Java语言的时代开始,再来回顾一下Java的发展轨迹和历史变迁。

 3.Java的基本思想

        在过去,大多数程序在移植到不同的操作系统平台(如UNIX、Linux和Windows等)上时,程序员通常不得不重新调试与编译这些程序,有时甚至需要重写。Java最大的优点就是在设计之初就秉承了“一次编写,到处运行”思想(Write Once, RunEverywhere,简称WORE,有时也写成“WriteOnce, Run Anywhere”,简称WORA),它是Sun 公司为宣传Java语言的跨平台特性而提出的口号。

        Java的跨平台性是指在一种平台下用Java语言编写的程序可以在编译后不用经过任何更改,就能在其他平台上运行。比如,一个在Windows下开发出来的程序,在运行时可以无缝地部署到Linux、UNIX或Mac OS(苹果操作系统)环境之下。反之亦然,在Linux下开发的Java程序,同样可在Windows等其他平台上运行。Java是如何实现跨平台性的呢?我们可用下面的图来比拟说明。

在这里插入图片描述

        比如说,中国人(一个平台)说的一句问候的话语:“你好,世界!”,美国人、法国人、德国人及日本人(其他平台)都能理解中国人的“问候”。之所以能这样,这得益于英文、法语、德语及日语翻译们的翻译。Java语言聪明之处在于,它用一个名为Java虚拟机(JVM—Java VirtualMachine)的机制屏蔽了这些“翻译”的细节。各国人尽管尽情地表达(编写Java代码),JVM在背后默默地帮他们干了“翻译沟通”的活。正是因为有JVM的存在,Java程序员才可以做到“一次编写,到处运行”——这正是Java的灵魂所在。

4.Java的技术体系

仅从传统意义上来看, Java技术体系包括以下几个组成部分:
●Java编程语言
●class文件格式
●Java API类库
●开源社区及商业机构的第三方Java类库
●各种平台上的Java虚拟机

        什么是JDK?什么又是JRE?两者有什么区别与联系?

        JDK:我们把Java编程语言、Java API类库和Java虚拟机这三部分统称为JDK(Java DevelopmentKit,Java 开发工具包)(注:JDK包括JRE,Java基本类库,Java开发工具,如编辑器,调试器等)。JDK是用于支持Java程序开发的最小环境。有时为了方便起见,会以JDK来代替整个Java技术体系。

        JRE: 我们把Java API类库中的Java SE API子集和Java虚拟机这两部分统称为JRE(Java RuntimeEnvironment,Java运行时环境),JRE是支持Java程序运行的标准环境。

        二者区别与联系:在Java技术体系上, JDK范围涵盖JRE,JRE是JDK的子集。如果仅仅是运行Java程序,用户计算机只需配置JRE环境;如果用户还想自己开发Java程序,则需要用户安装配置JDK环境。

        按照Java技术关注的重点业务领域来划分,Java技术体系可以分为4个平台,如下图所示。

        (1)Java SE(Standard Edition,标准版):支持面向桌面级应用(如Windows下的应用程序)的Java平台,提供了完整的Java核心API,这个版本2005年以前称为J2SE。

       (2) Java EE(Enterprise Edition,企业版):以Java SE为基础,往外延伸,增加了许多支持企业内部使用的扩充类,支持使用多层架构的企业应用(如ERP—企业资源计划系统、CRM—客户关系管理系统的应用)的Java平台,除了提供Java SEAPI外,还对其做了大量的扩充并提供了相关的部署支持。这个版本2005年以前称为J2EE。

       (3) Java ME(Micro Edition,微型版):JavaME同样以Java SE为基础,但向内精简。它所支持的只有核心类的子集合,它支持Java程序运行在移动终端(手机、PDA—掌上电脑)上的平台,加入了针对移动终端的支持。这个版本2005年以前称为J2ME。Java的微型版主要是进行嵌入式开发,目前渐渐被Android开发所替代。

       (4)Java Card(智能卡版):由于服务对象定位更加明确化,Java Card版本比Java ME(微型版)更加精简。它支持一些Java小程序(Applets)运行在小内存设备(如容量小于64K的智能卡)的平台上。

        但是,不管Java的技术平台如何划分,都是以JavaSE为核心的,所以掌握Java SE最为重要,这也是本书的主要讲解范围。如果要想进行Java EE的开发,Java SE是其中必要的组成部分,这也就是为什么在学习Java EE之前要一定要有扎实的Java SE基础了。

 5.java的学习路线

        Java学习的路线在整体上需遵循:初级阶段-中级阶段-高级阶段。不建议一开始就“越级”学习,需知“欲速则不达”。在这三个阶段各自内部的知识点,没有必然的先后次序,可根据自己的实际情况“有的放矢”地学习。不管处于哪个学习阶段,都要重视Java的实战练习。

 

6.Java学习的经验

        Java是一门面向对象编程(Object-orientedprogramming,简称OOP)语言,在学习的过程中一定要多从面向对象的角度去考虑问题。在初级入门阶段,读者要以上机实训为主,多动手,增强自己对Java代码的感性认识。感性认识积累多了,再配合书籍学好理论,这才能有高层次的理性认知。

        学习任何编程语言,亲自动手编程实践是必不可少的。在阅读完每一个章节后,尽量将书上的实例代码和课后习题亲自编写一遍。在编写代码的过程中,一定要理清代码思路,发现问题,解决问题。对复杂的代码要反复揣摩,直至烂熟于心。

        有些源代码已随书配备,有些网站上也提供现成的,但作为初学者,务必不能偷懒,直接复制,拿来就用。虽然亲自编写代码比较麻烦,也容易出错,但请记住:纠正这些错误正是非常好的学习机会!

        从一个Java的初学者,升级为一个编程高手,没有捷径。其必经的一个成长路线正如下图所示:(1)编写代码 →(2)犯错(发现问题)→(3)纠错(解决问题)→(4)自我提升……积累了一定的感性认识后,才会有质的突变,提升至新的境界。总之,想成为一个高水平的Java程序员,一定要多动手练习,多思考。

        阅读Java书籍也要掌握一定的技巧。建议读者在阅读时,快速看完某一章的全部内容,在第一遍阅读期间,可允许在一定程度上“不求甚解”。当读者掌握了Java的基础语法,初步理解了面向对象的编程主要特征后,这时应该重新看书——“温故而知新”,将书中的面向对象内容从头到尾再看一遍,进行知识的归类总结。建议在学习过程中记录心得和感悟,把自己对某一知识点的理解记录下来。在书本空白处,甚至可在个人的博客里纪录下自己的感悟,这样一来可加深自己理解,二来也可服务在此知识点困惑的其他读者,一举两得。

        学习要循序渐进。在学习的初期,读者应从基础语法学起,不要拘泥于细节,耐得住性子,把书读完,先将容易理解的部分快速学会,再去研究晦涩的部分。当一个知识点实在搞不明白的时候,可以先把它记下来。先从宏观上对一个知识点有个整体的把握,然后回过头来再研究细节。一开始“有所舍弃”,之后“重头再来”,这会提高你的学习效率,让你养成一个良好的学习习惯。

        “罗马不是一日建成的(Rome was not built ina day)”,编程高手也不是一日能成就的。《荀子·劝学篇》亦有云:“骐骥一跃,不能十步;驽马十驾,功在不舍。学习Java的途中没有捷径,需要进行不断地理论学习、反复地实战练习才能将代码运用灵活,就好像练习武功一样,只有重视基本功,并持之以恒,才能让自己的动作收放自如,招式炉火纯青。加油吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/339620.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据挖掘,计算机网络、操作系统刷题笔记48

数据挖掘,计算机网络、操作系统刷题笔记48 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,orac…

2.11sql的增删查改

一.CURD(增删查改1.c新增insert往表里添加数据注意事项1.2.3.4.5.如果是蓝丁文的2.R1.全列查找这一步很危险2.指定列查找3.带表达式的查找4.别名5.查找结果去重:DISTINCT6 排序:ORDER BY7 条件查询:WHERE1.比较运算符WHERE条件可以使用表达式&#xff0c…

如何生成毕业论文的目录和创建模板

有粉丝同学最近在写毕业论文,其中比较让人恼火的是毕业论文的目录,折腾了几遍没弄好,想让我写个简单地教程,那就来吧。主要分为三步:第一步是从模板里面提取标题的样式,第二步是对自己的论文使用设置好的标…

DaVinci:调色版本

调色版本 Grade Version记录着片段的全部调色信息。将一种调色风格或效果,保存为一个调色版本,从而可在多个调色版本之间查看、比较、挑选或者渲染输出。调色版本类型本地版本Local Versions在没有创建新的调色版本之前,片段的调色信息默认记…

MySQl单表查询

表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等 CREATE TABLE worker ( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL, 工资 float(8,2) NOT NULL, 政治面貌 varchar…

1dB压缩点和三阶交调点、相位差与延时

1dB压缩点与三阶交调点 要知道放大器是一个非线性系统,传输函数基本用泰勒级数表示 如果输入信号幅度很小,那么上式中2次及以上的项就可以忽略而成为小信号的情况。在许多情况下我们可以忽略3次以上的项。 如果输入一个正弦信号 1、可以看到一个单频率…

webpack-dev-server 的 host 配置 0.0.0.0

webpack-devserver 的 host 配置 0.0.0.0配置成0.0.0.0有什么意义为什么会有以上现象什么是webpack-dev-server什么是0.0.0.0什么是127.0.0.1什么是localhost配置成0.0.0.0有什么意义 假如某个vue项目的webpack配置如下: 在这module.exports {dev: {...//其余的配…

ubuntu部署quark-5

下载源代码 解压zip sudo apt-get install unzip unzip xxxxx.zip安装所需要的包 sudo apt install python2 # 查看是否配置了默认的python sudo update-alternatives --list python若没有设置,会显示: # update-alternatives: error: no alterna…

多行文本在块元素中垂直居中

单行文本垂直居中对齐 在块元素中&#xff0c;让单行文本居中&#xff0c;可以使用line-height等于块元素的高&#xff0c;即可让该单行文本垂直居中对齐。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><me…

Java:SpringMVC的使用(1)

目录第一章、SpringMVC基本了解1.1 概述1.2 SpringMVC处理请求原理简图第二章、SpringMVC搭建框架1、搭建SpringMVC框架1.1 创建工程【web工程】1.2 导入jar包1.3 编写配置文件(1) web.xml注册DispatcherServlet(2) springmvc.xml(3) index.html1.4 编写请求处理器【Controller…

Android 进阶——Framework核心 之Binder Java成员类详解(三)

文章大纲引言一、Binder Java家族核心成员关系图二、Binder Java家族核心成员源码概述1、android.os.IBinder1.1、boolean transact(int code, Parcel data, Parcel reply, int flags) send a call to an IBinder object1.2、String getInterfaceDescriptor()1.3、boolean ping…

【宝塔部署SpringBoot前后端不分离项目】含域名访问部署、数据库、反向代理、Nginx等配置

一定要弄懂项目部署的方方面面。当服务器上部署的项目过多时&#xff0c;端口号什么时候该放行、什么时候才会发生冲突&#xff1f;多个项目使用redis怎么防止覆盖&#xff1f;Nginx的配置会不会产生站点冲突&#xff1f;二级域名如何合理配置&#xff1f;空闲的时候要自己用服…

【生成式AI】谁拥有生成式 AI 平台?

文章目录市场的价值将增长点技术栈&#xff1a;基础架构、模型和应用程序生成式 AI 应用程序留存率和差异化方面举步维艰生成式 AI 应用程序公司面临的一些问题模型提供商尚未达到大规模商业规模基础设施供应商是目前的最大赢家系统性的护城河技术栈早期阶段出现在生成人工智能…

[个人笔记] Zabbix实现自定义脚本监控Agent端

系统工程 - 运维篇 第三章 Zabbix实现自定义脚本监控Agent端系统工程 - 运维篇系列文章回顾前言实施步骤前置条件Zabbix实现自定义脚本监控Agent端Zabbix实现ssh免密登录OpenWrt服务器编写自定义sh脚本监控OpenWrt&#xff0c;zabbix测试监控功能Windows及Linux安装Zabbix-Agen…

IDEA自定义自动导包设置

JetBrains公司的intellij Idea堪称JAVA编程界的苹果&#xff0c;用户体验非常好 下面介绍一下IDEA的一个能显著提升写代码效率的非常好用的功能设置—— Auto Import 在使用IDEA编程时&#xff0c;我们会经常使用到下面两个快捷键 CTRLALTO(Windows) 自动导包快捷键CTRLALTL(W…

安全渗透测试中的一款免费开源的超级关键词URL采集工具

安全渗透测试中的一款免费开源的超级关键词URL采集工具。 #################### 免责声明&#xff1a;工具本身并无好坏&#xff0c;希望大家以遵守《网络安全法》相关法律为前提来使用该工具&#xff0c;支持研究学习&#xff0c;切勿用于非法犯罪活动&#xff0c;对于恶意使…

flutter 升级到 3.7.3 报错 Unable to find bundled Java version

大家好&#xff0c;我是 17。 Android studio 是2020 年的版本&#xff0c;有点老&#xff0c;昨天突发想法&#xff0c;升级到了 Android Studio Electric Eel 2022.1。 计划今天和明天写那个 Flutter WebView 优化的文章&#xff0c;这篇是 在 Flutter 中使用 webview_flut…

Android-Service详解

前言 Service 是长期运行在后台的应用程序组件 。 Service 是和应用程序在同一个进程中&#xff0c;所以应用程序关掉了&#xff0c;Service也会关掉。可以理解为 Service是不能直接处理耗时操作的&#xff0c;如果直接把耗时操作放在 Service 的 onStartCommand() 中&#xff…

健康码互通方案优化

背景 解决不同场景一码通–全国互认互扫 技术方案设计目标&#xff1a;安全、高可用、可拓展、高性能、易用性。 健康码二维码优化 要设计一个能互通的二维码&#xff0c;二维码需要放入的信息会更多&#xff0c;因为需要塞进去更多的内容。而二维码会因为字符串的长度而导致…

Redis实例绑定CPU物理核优化Redis性能

进入本次Redis性能调优之前&#xff0c;首先要知道CPU结构也会影响Redis的性能。接下来&#xff0c;具体了解一下&#xff01;为什么CPU结构也会影响Redis的性能&#xff1f;主流的 CPU 架构一个 CPU 处理器中一般有多个物理核&#xff0c;每个物理核都可以运行应用程序。每个物…