Java前言..

2023-12-17

1.软件开发的分类

软件开发我们可以将其分成三类:移动开发(Android、iOS)、前端开发(HTML、CSS、JavaScript)、后台开发(Java、Python、C++……)

2.软件开发的分工

其中移动开发负责开发一些移动设备上的应用
前端开发主要负责一些桌面网站的开发
后台开发主要负责的项目是服务器相关的东西
但是移动开发和前端开发的产品还有一些其他的联网设备都需要和后台服务器之间进行数据的请求和返回 所以说后台开发明显是比较重要的

3.Java的三大版本

1.Java SE(Java平台标准版)

这是Java ME和Java EE的基础 用于开发一些桌面应用、游戏(当然C++比较擅长这块)

2.Java ME(Java平台微型版)

用于开发一些以前的移动应用 但是现在基本上被Android和iOS占据市场

3.Java EE

用于开发一些企业级的应用 比如:后台管理系统
很多人学习Java 最后都是为了从事这个版本的Java开发 市场需求量最大的也是Java EE

因此综上来说 推荐的学习路线是Java SE->Java EE 我们不用关注Java ME

4.Java的版本演进

我们一般常说的Java版本指的是Java SE或者JDK的版本
企业中用的最多的是Java 8
其实有一开始的版本还都是1.1 1.2 1.3 1.4这样的形式
但是到了下一个版本就变成了5.0 其实5.0就是纪念的作用 本质上就是1.5

5.不同编程语言的跨平台原理

1.C/C++的跨平台原理

使用平台对应的编译器将源文件编译成平台相关的可执行文件 然后加载到各自的平台上运行(可执行文件中是机器指令)

2.Java的跨平台原理

将源文件编译成字节码文件 然后通过平台相关的JVM将字节码解析成机器指令 然后加载到各自的平台上运行(字节码文件中不是机器指令)
Java的跨平台编译生成的是与平台无关的字节码文件

Java跨平台的特点:一次编译 多次运行
C/C++跨平台的特点:多次编译 多次运行

6.Java开发效率高的原因

1.跨平台
不用操心编译器 因为编译器和平台无关
2.垃圾回收机制
不用手动进行内存管理 不用担心内存泄漏问题
3.发展时间长 有强大的技术生态圈
有很多的第三方库以及辅助工具
你遇到的问题 基本上别人也都遇到过

7.学习资料的选择

我们要特别小心非官方的资料 尤其是中文资料
但是就算是官方资料 也可能会有错误 所以说要求我们需要持有观望的态度去看待资料

8.Java开发必备的软件

要想开发并运行一个Java程序 就需要具备两个软件:JDK和JRE
其中JDK为Java开发工具包 他包含了Java程序开发过程中各种常用工具
JRE为Java运行环境 他负责将开发好的Java程序运行到JVM上

从Java官方的文档上看 其实我们可以知道JDK已经包含了JRE 所以说我们只需要单独下载JDK即可 无需下载JRE

9.JDK下载的注意事项

前面我们说过了JDK包含了JRE 但是下载过程中 会默认勾选下载公共JRE 我们需要将这个勾选去掉 如果我们默认选择下载公共JRE的话 那么就会在JDK所在文件夹中看到JRE
JDK的下载路径( JDK )

10.Java IDE的选择

我们需要选择一款IDE进行Java程序的开发 常见的IDE主要有:Eclipse、IDEA
对于Eclipse来说 我们进入官网( Eclipse )以后 可以发现有很多版本 在学习Java语法阶段 我们选择非企业版即可 即Eclipse IDE for Java Developers
下载安装完毕后 如果你直接打开eclipse这个软件的话 他会弹出报错信息 从该信息中我们可以知道 他会去Path中搜索javaw这个文件 但是其实javaw在我们的jdk目录下的bin目录中 Path(环境变量)本质上是一个路径集合 我们需要将javaw所在的路径配置到Path中 然后eclipse就会去Path中的某一个路径下进行搜索 查找指定的文件javaw 所以要求我们将javaw文件所在路径配置到Path路径集合中
成功启动以后 他会让你选择一个工作空间去储存你编写的源文件 你甚至可以将你选择的工作空间设置为默认的储存空间
前面说到的环境变量 我们是往用户变量中的Path添加指定路径 但是往往我们不止配置这一个路径 还可能配置更多的路径
比如我们需要配置的路径有jdk路径下的bin目录 还有jdk路径下的jre路径下的bin目录 但是他们有公共部分 所以我们可以将其抽取出来并且其别名 然后以后 如果jdk的安装路径一旦修改了 那么在环境变量中我们就无需批量修改jdk的安装路径 而是只要修改一处抽取出来的公共部分即可 一般对于这个公共部分我们起别名为JAVA_HOME 然后我们要引用这个路径的话 可以通过%%进行引用 我们也可以在文件资源管理器中直接引用即可
打开eclipse后 我们一般在下方保留Problems和Console两个板块即可 前者用于看报错信息 后者用于看控制台的输出信息
然后关于eclipse中的设置:
比如字体大小的设置 我们可以打开Preferences/General/Appearance/Colors and Fonts/Basic/Text Font就可以设置字体大小了
再比如文本编码的设置 我们可以打开Preferences/General/Content Types/Text 然后设置Default encoding为UTF-8即可 防止乱码现象的产生

11.Java和C/C++的区别

一个Java程序是由类-函数-语句组成 一个C/C++程序是由函数-语句组成
并且Java IDE中一个项目可以允许多个Java程序带有多个main函数 但是C/C++ IDE中一个项目只允许一个相应的程序带有一个main函数

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java前言.. 的相关文章

  • Java Swing:从 JOptionPane 获取文本值

    我想创建一个用于 POS 系统的新窗口 用户输入的是客户拥有的金额 并且窗口必须显示兑换金额 我是新来的JOptionPane功能 我一直在使用JAVAFX并且它是不同的 这是我的代码 public static void main Str
  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • Java JDBC:更改表

    我希望对此表进行以下修改 添加 状态列 varchar 20 日期列 时间戳 我不确定该怎么做 String createTable Create table aircraft aircraftNumber int airLineCompa
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • INSERT..RETURNING 在 JOOQ 中不起作用

    我有一个 MariaDB 数据库 我正在尝试在表中插入一行users 它有一个生成的id我想在插入后得到它 我见过this http www jooq org doc 3 8 manual sql building sql statemen
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • Mockito when().thenReturn 不必要地调用该方法

    我正在研究继承的代码 我编写了一个应该捕获 NullPointerException 的测试 因为它试图从 null 对象调用方法 Test expected NullPointerException class public void c
  • JRE 系统库 [WebSphere v6.1 JRE](未绑定)

    将项目导入 Eclipse 后 我的构建路径中出现以下错误 JRE System Library WebSphere v6 1 JRE unbound 谁知道怎么修它 右键单击项目 特性 gt Java 构建路径 gt 图书馆 gt JRE
  • 使用Caliper时如何指定命令行?

    我发现 Google 的微型基准测试项目 Caliper 非常有趣 但文档仍然 除了一些示例 完全不存在 我有两种不同的情况 需要影响 JVM Caliper 启动的命令行 我需要设置一些固定 最好在几个固定值之间交替 D 参数 我需要指定
  • getResourceAsStream() 可以找到 jar 文件之外的文件吗?

    我正在开发一个应用程序 该应用程序使用一个加载配置文件的库 InputStream in getClass getResourceAsStream resource 然后我的应用程序打包在一个 jar文件 如果resource是在里面 ja
  • 如何在控制器、服务和存储库模式中使用 DTO

    我正在遵循控制器 服务和存储库模式 我只是想知道 DTO 在哪里出现 控制器应该只接收 DTO 吗 我的理解是您不希望外界了解底层域模型 从领域模型到 DTO 的转换应该发生在控制器层还是服务层 在今天使用 Spring MVC 和交互式
  • simpleframework,将空元素反序列化为空字符串而不是 null

    我使用简单框架 http simple sourceforge net http simple sourceforge net 在一个项目中满足我的序列化 反序列化需求 但在处理空 空字符串值时它不能按预期工作 好吧 至少不是我所期望的 如
  • 编译器抱怨“缺少返回语句”,即使不可能达到缺少返回语句的条件

    在下面的方法中 编译器抱怨缺少退货声明即使该方法只有一条路径 并且它包含一个return陈述 抑制错误需要另一个return陈述 public int foo if true return 5 鉴于Java编译器可以识别无限循环 https
  • 在 Maven 依赖项中指定 jar 和 test-jar 类型

    我有一个名为 commons 的项目 其中包含运行时和测试的常见内容 在主项目中 我添加了公共资源的依赖项
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 将 List 转换为 JSON

    Hi guys 有人可以帮助我 如何将我的 HQL 查询结果转换为带有对象列表的 JSON 并通过休息服务获取它 这是我的服务方法 它返回查询结果列表 Override public List
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview
  • 使用 xpath 和 vtd-xml 以字符串形式获取元素的子节点和文本

    这是我的 XML 的一部分

随机推荐

  • stm32选题分享 - 单片机森林火灾监控防护预警系统 - 物联网 嵌入式

    文章目录 0 前言 1 简介 2 主要器件 3 实现效果 4 硬件设计 SIM800L模块的工作原理 基于物联网的森林火灾探测系统框图 Arduino火灾检测系统的电路图 5 软件说明
  • 大模型算法工程师的面试题来了(附答案)

    自 ChatGPT 在去年 11 月底横空出世 大模型的风刮了整一年 历经了百模大战 Llama 2 开源 GPTs 发布等一系列里程碑事件 将大模型技术推至无可争议的 C 位 基于大模型的研究与讨论 也让我们愈发接近这波技术浪潮的核心 最
  • 第二章 VMware的使用-安装-创建虚拟机-安装Linux-常见问题-全网看这一篇就足够

    第二章 VMware的使用 学习目标 1 熟悉VMware软件的作用 2 可以熟练安装VMware软件 3 可以熟练使用VMware创建虚拟计算机 4 可以熟练为虚拟计算机安装Linux操作系统 5 能独立解决安装过程中的常见问题 第一节
  • 传输层协议

    目录 UDP协议 如何向上交付 如何解包 UDP协议的特点 UDP是全双工的 UDP面向数据报 TCP协议 如何向上交付 如何解包 4位首部长度 TCP的可靠性 序号与确认序号 16位窗口大小 6位标记 为什么需要6位标记 ACK SYN
  • Python获取去哪儿旅游数据并作可视化攻略

    嗨喽 大家好呀 这里是爱看美女的茜茜呐 开发环境 版 本 python 3 8 编辑器 pycharm 第三方库 requests gt gt gt pip install requests parsel gt gt gt pip inst
  • Java基础语法..

    1 Java程序和Java项目 一个Java程序是由类 函数 语句组成的 其中类包含函数 函数包含语句 一个Java项目允许存在多个main函数 其实函数就是方法 如果你运行的对象是Java项目的话 那么他只能选择项目中的其中一个main函
  • 微服务架构企业级精品项目——天机学堂

    1 学习背景 各位同学大家好 经过前面的学习我们已经掌握了 微服务架构 的核心技术栈 相信大家也体会到了微服务架构相对于项目一的单体架构要复杂很多 你的脑袋里也会有很多的问号 微服务架构该如何拆分 到了公司中我需要自己搭建微服务项目吗 如果
  • 单片机毕设分享 基于单片机的风速测量系统 - 物联网 嵌入式 stm32 arduino

    文章目录 0 前言 1 简介 2 主要器件 3 实现效果 4 硬件设计 风速计简介 Adafruit风速计传感器 5 软件说明 Arduino风速计的源代码 程序
  • 什么是概率匹配

    概率匹配是一种在信息论和统计学中常用的方法 用于将一个随机事件的概率分布与另一个概率分布进行匹配或逼近 它在数据处理 编码 压缩和模型选择等领域具有重要的应用 为我们理解和处理复杂的概率分布提供了一种有效的工具 首先 让我们来了解概率匹配的
  • 【故障识别】基于遗传算法优化长短期记忆神经网络GA-LSTM 实现数据分类预测附matlab实现

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 代码获取 论文复现及科研仿真合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 更多Matlab完整代码及仿真定制内容点击 智能优化算法 神经网络预测 雷达通信
  • 【MySQL内置函数】

    目录 前言 一 日期函数 获取日期 获取时间 获取时间戳 在日期上增加时间 在日期上减去时间
  • 【工具栏】(idea)背景图像

    下载之后
  • stm32项目分享 - 单片机森林火灾监控防护预警系统 - 物联网 嵌入式

    文章目录 0 前言 1 简介 2 主要器件 3 实现效果 4 硬件设计 SIM800L模块的工作原理 基于物联网的森林火灾探测系统框图 Arduino火灾检测系统的电路图 5 软件说明
  • “宠物之家”宠物救助系统的设计与实现 毕业设计源码40439

    赠送源码 毕业设计 SSM 宠物之家 宠物救助系统 https www bilibili com video BV1ag4y1f7rg vd source 72970c26ba7734ebd1a34aa537ef5301 SSM 宠物之家
  • 自信息量和一阶熵

    信息论中 自信息量和一阶熵是用来度量信息的重要概念 它们提供了一种方式来理解和量化信息的不确定性和平均量 对于解决信息传输 编码和存储等问题非常有用 首先 让我们来了解一下自信息量 自信息量是用来度量一个事件的信息量或不确定性的大小 假设有
  • 学 Linux 必会的 ARM 汇编指令

    学习 Linux 系统启动流程 必须熟悉几个汇编指令 总结给大家 这里不是最全的 只列出一些最常用的汇编指令 一 数据处理指令 1 数据传送指令 MOV指令 把一个寄存器的值 立即数 赋给另一个寄存器 或者将一个常量赋给寄存器 MOV指令的
  • lv12 uboot源码配置编译 8

    目录 1 uboot源码获取 2 uboot特定 3 uboot源码结构 3 1 平台相关代码 3 1 1 arch 3 1 2 board 3 2 平台无关代码 3 2 1 common下放的都是uboot的命令 3 3 配置文件 帮助文
  • DS八大排序之冒泡排序和快速排序

    前言 前两期我们已经对 插入排序 直接插入排序和希尔排序 和 选择排序 直接选择排序和堆排序 进行了详细的介绍 这一期我们再来详细介绍一组排序 交换排序 即耳熟能详的冒泡排序和赫赫有名的快速排序 本期内容介绍 冒泡排序 快速排序 Hoare
  • prometheus监控交换机

    本例以监控华为交换机为例 prometheus环境搭建见前面的文章 1 环境准备 yum install y gcc gcc g make net snmp net snmp utils net snmp libs net snmp dev
  • Java前言..

    1 软件开发的分类 软件开发我们可以将其分成三类 移动开发 Android iOS 前端开发 HTML CSS JavaScript 后台开发 Java Python C 2 软件开发的分工 其中移动开发负责开发一些移动设备上的应用 前端开