Java语言特性和技术特点探究

scrapy - 美团民宿 实战练习 目录结构 items.py import scrapy # 民俗名称,地区,价格,房间类型及数量,床的数量,可住几人 class MeituanItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() title = scrapy.Field() place = scrapy.Field() price = scrapy.F... 阅读详情

Java语言特性和技术特点探究

1   引子

Java一直以来是排名前二的编程语言, 这篇文章我们来学习和探讨一下Java的语言特性和技术特点。

 

2 通用的Java

Java是一种通用的编程语言,它是比较经典的面向对象编程语言,面向对象编程的一个重要特性就是更容易实现高内聚低耦合的代码。

    Java的主要特点是让应用程序开发人员编写一次即可在任何地方运行(WORA。这意味着已编译的Java代码可以在支持Java的所有平台上运行,而无需重新编译。

    Java应用程序通常被编译为可在任何Java虚拟机(JVM)上运行的字节码,而这与底层计算机体系结构无关。

     Java的语法类似于C和C ++,但是它的低级功能比后两者都少。截至2019年,Java是GitHub上使用的最受欢迎的编程语言之一,特别是对于客户端-服务器Web应用程序,据报道有900万开发人员。

    Java最初由Sun Microsystems的James Gosling开发(此后已被Oracle收购),并于1995年作为Sun Microsystems的Java平台的核心组件发布。原始和参考实现Java编译器,虚拟机和类库最初是由Sun根据专有许可发布的。截至2007年5月,Sun遵循Java Community Process的规范,已根据GNU通用公共许可证重新许可了其大多数Java技术。同时,其他公司也开发了这些Sun技术的替代实现,例如Java的GNU编译器(字节码编译器),GNU的Classpath(标准库)和IcedTea-Web(小程序的浏览器插件)。

 

    Java最新版本是2020年3月发布的Java 14。目前的LTS版本是2018年9月25日发布的ava 11。

    Oracle在2019年1月为旧版Java 8 LTS发布了最后的免费公共更新供商业使用,而在非商业情况下,将至少在2020年12月之前仍支持Java 8以及供个人使用的公共更新。        

    Oracle强烈建议卸载旧版本Java,因为这些旧版本由于存在未解决的安全问题而存在严重的风险,因此版本的Java由于不再支持Java 9、10、12和13,Oracle建议它的用户们立即过渡到最新版本(当前为Java 14)或者LTS版本。

 

 

 

 

2.1  历史

 

     詹姆斯·高斯林,迈克·谢里丹和帕特里克·诺顿在1991年6月发起了Java语言项目。Java最初是为交互式电视而设计的,但是对于当时的数字有线电视行业来说,它实在太先进了。该语言最初是在高斯林办公室外的一棵橡树之后被称为橡树的。后来,该项目以Green命名,并最终从Java coffee(印度尼西亚的咖啡)重命名为Java。戈斯林使用C / C ++样式的语法设计了Java,这样使得系统程序员和应用程序程序员都会熟悉。

     Sun Microsystems于1996年发布了第一个公共实现Java 1.0版本。它承诺一次编写,随处运行(WORA)的功能,在流行的才做系统平台上提供免费的运行时程序库。

     Java相当安全并且具有可配置的安全性,它允许网络和文件访问限制。主流的网络浏览器很快就合并了在网页中运行Java小程序的功能,并且当时Java也迅速流行起来。为了严格遵守Java 1.0语言规范,Arthur van Hoff用Java重写了Java 1.0编译器。

    随着Java 2的出现(1998年12月至1999年最初发布为J2SE 1.2),新版本具有针对不同类型平台构建的多种配置。J2EE包含了通常在服务器环境中运行的企业应用程序的技术和API,而J2ME提供了针对移动应用程序优化的API。桌面版本已重命名为J2SE。在2006年,出于营销目的,Sun将新的J2版本分别重命名为Java EE,Java ME和Java SE。

     在1997年,Sun Microsystems与ISO / IEC JTC 1标准机构联系,后来又与Ecma International接触,以使Java标准正式化,但是它很快就退出了这一过程。Java仍然是事实上的标准,可以通过Java社区流程进行控制。尽管有专有软件许可状态,Sun却一次性的免费提供了大多数的Java实现。Sun通过出售专用产品(如Java Enterprise System)的许可证从Java技术中获得收入。

    根据GNU通用公共许可证(GPL)的条款,Sun在2006年11月13日将其大部分Java虚拟机(JVM)作为免费和开源软件(FOSS)发布。截止 2007年5月8日,除了一小部分未获得版权的代码外,所有Java JVM的核心代码均以免费软件/开源发行条款的方式提供。

 

    Sun的副总裁Rich Green表示,Sun在Java方面的理想角色是担任传教士。甲骨文公司(Oracle Corporation)在2009-10年度收购了Sun Microsystems之后,甲骨文将自己描述为Java技术的管家,并坚定地致力于建立参与性和透明性社区。

        但是Oracle却因为Google在Android SDK中使用Java而对Google提起了诉讼。

         2010年4月2日,詹姆斯·高斯林(James Gosling)从甲骨文辞职。

         2016年1月,Oracle宣布基于JDK 9的Java运行时环境将停止使用浏览器插件。

         截至目前,Java软件可以运行在从笔记本电脑到数据中心服务器,游戏机到科学超级计算机的所有平台上。

 

 

 

2.2  Java的五个原则

   Java语言的创建有五个主要目标:

·         简单,面向对象并且让程序员感觉熟悉。

·         健壮和安全。

·         与架构无关并且可移植。

·         以高性能执行。

·         可解释性,线程化和动态化。

 

 2.3 Java的不同版本用途

Sun已针对不同的应用程序环境定义并支持了四个Java版本,并对其许多API进行了细分,使其属于其中一种平台。这些平台包括:

 

·         用于智能卡的Java Card。

·         Java平台微型版(Java ME)–针对资源有限的环境。

·         Java平台标准版(Java SE)–针对工作站环境。

·         Java平台企业版(Java EE)–针对大型分布式企业或Internet环境。

    Java API中的类被组织到称为包的单独模块中。每个软件包都包含一组相关的接口,类和异常。

    Sun还提供了一个名为Personal Java的版本,该版本已被后来基于Java ME标准的配置文件配对所取代。

 

 

2.4 执行系统

 

2.4.1  Java JVM和字节码

 

    Java的一个设计目标是可移植性,这意味着为Java平台编写的程序必须能够在具有运行时环境程序库支持的硬件和操作系统的任何组合上运行。通过将Java语言代码编译为Java字节码,而不是直接编译为特定于体系结构的机器代码来实现其可移植性。Java字节码指令类似于机器代码,但是它们旨在由专门为主机硬件编写的虚拟机(VM)所执行。最终用户通常将安装在其机器上的Java运行时环境(JRE)用于运行独立的Java应用程序,或者将其安装在Web浏览器中用于Java小程序。

    标准库提供了一种访问主机特定功能(如图形,线程和网络)的通用方法。

    通用字节码的使用使移植变得简单。但是,将字节码解释为机器指令的开销使解释后的程序几乎总是比本机可执行文件运行得慢。从早期开始就引入了实时(JIT)编译器,该编译器在运行时将字节代码编译为机器代码。Java本身是独立于平台的,并且适用于Java虚拟机在其上运行的特定平台,Java虚拟机将Java字节码转换为平台的机器语言。

 

2.4.2  性能

 

    一般来讲用Java编写的程序比用C++编写的程序速度要慢并且需要更多的内存。然而,随着1997/1998年Java 1.1引入了just-in-time编译机制,增加了支持更好的代码分析的语言特性(如内部类、StringBuilder类、可选的断言等),以及Java虚拟机的优化,如HotSpot在2000年成为Sun公司的JVM的默认配置,Java程序的执行速度得到了显著的提高。在Java 1.5版本中,随着java.util.concurrent包的加入,包括ConcurrentMaps和其他多核集合的无锁实现,性能得到了提升,而在Java 1.6版本中,性能得到了进一步的提升。

 

2.4.3  Non-JVM

 

    一些平台提供了对Java的直接硬件支持;有一些微控制器可以在硬件中运行Java字节码而不是软件Java虚拟机,而一些基于ARM的处理器可以通过其Jazelle选项对执行Java字节码提供硬件支持,值得注意的是在目前的ARM实现中,这种支持大多已经被放弃。

 

2.4.4  自动内存管理

 

     Java使用自动垃圾回收器来管理对象生命周期中的内存。程序员决定对象何时创建,一旦对象不再使用,Java运行时负责回收内存。一旦没有对象的引用残留下来,无法到达的内存就会在垃圾回收时被垃圾回收器自动释放。如果程序员的代码中保留了一个不再需要的对象引用,那么类似于内存泄露的事情仍然可能发生,通常情况下,当不再需要的对象被存储在仍在使用的容器中时,就会出现类似于内存泄露的情况。如果调用了一个不存在的对象的方法,就会抛出一个空指针异常。

     Java的自动内存管理模型背后的一个想法是,程序员可以省去手动管理内存的负担。在某些语言中,创建对象的内存是在堆上隐式分配,或者显式分配,然后在堆上释放。在后一种情况下,管理内存的责任在于程序员。如果程序不对对象进行释放,就会发生内存泄漏。如果程序试图访问或释放已经被释放的内存,其结果是无意义的而且难以预测的,程序很可能会变得不稳定甚至崩溃。这种情况可以通过使用智能指针来部分补救,但这些都会增加开销和复杂度。

    注意,垃圾回收并不能防止逻辑内存泄漏,即那些内存仍被引用但从未使用的内存泄漏。

     垃圾回收可能会在任何时候发生。理想情况下,它将在程序空闲时发生。如果堆上没有足够的空闲内存来分配一个新的对象,它就会被触发,这可能会导致程序瞬间停滞。在Java中不支持显式内存管理。

     Java不支持C/C++风格的指针算术,比如对象地址可通过加减偏移量来进行算术操作。这使得垃圾回收器可以重新定位引用的对象,并也确保了类型安全和安全性。

     就像C++和其他一些面向对象语言一样,Java的原始数据类型的变量要么直接存储在字段中(对于对象而言),要么存储在堆中(对于方法而言),而不是像非原始数据类型那样通常存储在堆中。这是Java的设计者出于性能方面的考虑有意识的决定。

     Java包含多种类型的垃圾回收器。默认情况下,HotSpot使用的是并行清空垃圾回收器。然而,也有其他几种垃圾回收器可以用来管理堆。对于Java中90%的应用来说,并发标记扫描(CMS)垃圾回收器已经足够了。Oracle的目标是用Garbag-First Collector(G1)代替CMS。

    解决了内存管理问题后,并没有减轻程序员正确处理其他资源的负担,比如网络或数据库连接、文件句柄等,尤其是在出现异常时的处理。有个矛盾的现象是,垃圾回收器的存在,在类中使用显式的析构函数的必要性淡化了,这一点进而增加了这些其他资源的管理难度。

 

 

 

2.5 语法

 

     Java的语法主要是受C++的影响。与C++结合了结构化、泛型和面向对象编程的语法不同,Java几乎完全是作为一种面向对象的语言来构建的,所有的代码都写在类内,除了原始数据类型(即整数、浮点数字、布尔值和字符)之外,每一个数据项都是一个对象。

     Java重用了C++的一些流行的功能, 如printf方法。

     与C++不同的是,Java不支持操作符重载,也不支持类的多重继承,但支持接口多重继承。

     Java使用的注释样式与C++的注释样式类似。有三种不同的注释风格:用两个斜线标记的 单行注释风格(//),用/*开头*/结尾的多行注释风格,用/**开头*/结尾的Javadoc注释风格。Javadoc注释样式允许用户运行Javadoc可执行文件来创建程序的文档,并且可以被一些集成开发环境(IDE)(如Eclipse)读取,允许开发人员在IDE中访问文档。

 

2.5.1  Hello World 例子

 

    传统的Hello world程序可以用Java写成:

    public class HelloWorldApp {

        public static void main(String[] args) {

            System.out.println("Hello World!"); 

        }

    }

 

    源文件必须以其包含的公共类命名,并使用后缀.java,例如,HelloWorldApp.java。首先必须使用Java编译器将其编译成字节码,生成一个后缀为.class的文件(本例中为HelloWorldApp.class)。只有这样,它才能被执行或启动。Java源文件可能只包含一个公共类,但也可以包含多个带有非公共访问修饰符的类和任意数量的公共内部类。当源文件包含多个类时,需要将一个类(由class关键字引入)为public(前面有public关键字),并以该public类名命名源文件。

 

    没有声明为public的类可以存储在任何.java文件中。编译器将为源文件中定义的每个类生成一个类文件。类文件的名称是类的名称,并附加了.class。对于类文件的生成,匿名类被视为其名称是由类的名称、一个$和一个整数组成。

    关键词public表示一个方法可以被其他类的代码调用,或者一个类可以被类层次结构之外的类使用。类的层次结构与.java文件所在的目录名称有关。这就是所谓的访问级修饰符。其他的访问级修饰符包括关键字private和protected。

    方法前面的关键字static表示静态方法,它只与类相关联,而不与该类的任何特定实例相关联。只有静态方法才能在没有引用对象的情况下被调用。静态方法不能访问任何非静态的类成员。没有被指定为静态的方法是实例方法,需要类的特定实例才能操作。

    关键字 void 表示主方法不向调用者返回任何值。如果Java程序要以错误代码退出,必须明确地调用System.exit()。

    方法名main不是Java语言中的关键字。它仅仅是Java启动器调用的方法名称,用于向程序传递控制权。在托管环境中运行的Java类(如applet和Enterprise JavaBeans)不使用也不需要main()方法。一个Java程序可能包含多个具有main方法的类,这意味着需要明确告诉VM从哪个类启动。

    main方法必须接受一个String对象的数组参数。按照惯例,它被引用为args,尽管可以使用任何其他合法的标识符名称。从Java 5开始,main方法也可以使用变量参数,形式为public static void main(String...args),允许用任意数量的String参数来调用main方法。这种交替声明的效果在语义上是相同的(对args参数来说,它仍然是一个String对象的数组)。

    Java启动器通过加载一个给定的类(在命令行中指定或作为JAR中的属性)并启动其公共静态void main(String[])方法来启动Java程序。单机程序必须明确声明这个方法。     String[] args参数是一个String对象的数组,包含了传递给类的所有参数。给main方法的参数通常是通过命令行传递的。

    打印是Java标准库的一部分。System类定义了一个叫out的公共静态字段。out对象是PrintStream类的一个实例,它提供了许多将数据打印成标准的out的方法,包括println(String),它会在传递的字符串上附加一个新行。

    字符串 "Hello World!"会被编译器自动转换为String对象。

 

2.5.2  带方法的例子

 

 

package fibsandlies;

 

import java.util.Map;

import java.util.HashMap;

 

public class FibCalculator extends Fibonacci implements Calculator {

    private static Map<Integer, Integer> memoized = new HashMap<>();

 

    public static void main(String[] args) {

        memoized.put(1, 1);

        memoized.put(2, 1);

        System.out.println(fibonacci(12));

    }

 

    public static int fibonacci(int fibIndex) {

        if (memoized.containsKey(fibIndex)) {

            return memoized.get(fibIndex);

        } else {

            int answer = fibonacci(fibIndex - 1) + fibonacci(fibIndex - 2);

            memoized.put(fibIndex, answer);

            return answer;

        }

    }

}

 

 

2.5.3  特殊类

 

2.5.3.1 Applet

 

   Java小程序是嵌入到其他应用程序中的程序,通常是在Web浏览器中显示的Web页面中。自2017年Java 8以来,Java applet API已经被废弃了。

 

2.5.3.2 Servlet

 

    Java servlet技术为Web开发人员提供了一个简单、一致的机制,用于扩展Web服务器的功能和访问现有业务系统。Servlet是服务器端Java EE组件,它对来自客户端的请求(通常是HTTP请求)产生响应(通常是HTML页面)。

 

    Java servlet API在一定程度上已经被两种标准的Java Web 服务技术所取代:

 

·         用于RESTful Web服务的Java API (JAX-RS 2.0),适用于AJAX、JSON和REST服务,以及

·         Java API for XML Web Services (JAX-WS) , 适用于SOAP Web Services。

 

2.5.3.3 JavaServer Pages

 

    JavaServer Pages (JSP)是服务器端Java EE组件,它可以生成通常是HTML页面的响应,响应源自于来自客户端的HTTP请求。JSPs通过使用特殊的分隔符<%和%>将Java代码嵌入到HTML页面中。JSP被编译成一个Java servlet,之后用生成的servlet来创建响应。

 

2.5.3.4 Swing 应用

 

    Swing是一个用于Java SE平台的图形用户界面库。它可以通过Swing的可插拔的外观和响应系统来指定不同的外观和响应。Windows、GTK+和Motif的克隆版由Sun公司提供。苹果公司也为macOS提供了Aqua外观。之前的这些外观和响应的实现被认为是有缺陷的,而Java SE 6中的Swing通过使用底层平台的原生GUI小部件绘制例程解决了这个问题。

 

2.5.3.5 JavaFX 应用

 

    JavaFX是一个软件平台,用于创建和交付桌面应用程序,以及可以在各种设备上运行丰富 的互联网应用程序(RIA)。JavaFX旨在取代Swing作为Java SE的标准GUI库,但在可预见的未来,这两个库都将被包含在内。JavaFX支持Microsoft Windows、Linux和macOS上的桌面电脑和网络浏览器。JavaFX不支持原生操作系统的外观和响应。

 

2.5.3.6 泛型

 

    2004年,作为J2SE 5.0的一部分,在Java语言中加入了泛型。在引入泛型之前,每个变量声明必须是特定类型的。例如,对于容器类来说,这就是一个问题,因为没有简单的方法来创建一个只接受特定类型的对象容器。要么容器对类或接口的所有子类型(通常是Object)进行操作,要么必须为每个包含的类创建不同的容器类。

    泛型允许在编译时进行类型检查,而不需要创建许多容器类,每个容器类包含几乎相同的代码。这除了可以让代码更高效外,还可以通过发布编译时错误来防止某些运行时异常的发生。如果Java能够阻止所有的运行时类型错误(ClassCastExceptions)的发生,那么它就是类型安全的。

    2016年,Java的类型系统被证明不健全的。

 

2.5.3.7 批评

 

    针对Java的批评意见包括:属性的实现、速度、 对无符号数的处理、浮点算术的实现、 以及Java虚拟机的主要实现(HotSpot)的安全漏洞。

 

2.5.3.8 类库

 

    Java类库是标准库,是为支持Java中的应用程序开发而开发的。它由Oracle通过Java社区进程计划与他人合作控制,参与这一进程的公司或个人可以影响API的设计和开发。这个过程在2010年代曾引起了争议。该类库包含的功能有:

·         核心库包括:

o   IO/NIO

o   Networking

o   Reflection

o   Concurrency

o   Generics

o   Scripting/Compiler

o   功能性编程(Lambda、流媒体)

o   数据结构的集合库,如列表、字典、树、集、队列和双端队列或堆栈等

o   XML处理(解析、转换、验证)库

o   安全性

o   国际化和本地化图书馆

 

·         集成库,它允许应用程序编写者与外部系统进行通信。这些库包括:

o   用于数据库访问的Java数据库连接(JDBC)API

o   用于查询和发现的Java命名和目录接口(JNDI)

o   用于分布式应用开发的RMI和CORBA

o   用于管理和监测应用程序的JMX

 

·         用户界面库,其中包括:

o   (重量级的或原生的)抽象窗口工具包(AWT),它提供了GUI组件、布局这些组件的方法和处理这些组件的事件的方法。

o   (轻量级)Swing库,它是建立在AWT基础上,但提供了AWT小部件的(非原生)实现。

o   用于音频采集、处理和播放的API

o   JavaFX

·         Java虚拟机的平台依赖性实现,它是执行Java库和第三方应用程序字节码的手段。

·         插件,使小程序可以在网页浏览器中运行。

·         Java Web Start,使Java应用程序能够有效地在互联网上向终端用户分发。

·         许可证和文档

 

2.5.4  文档

 

    Javadoc是一个全面的文档系统,由Sun Microsystems公司创建,很多Java开发人员都在使用。它为开发人员提供了一个有组织的系统来记录他们的代码。Javadoc注释的开头有一个额外的星号,也就是说,分界符是/**和*/,而Java中正常的多行注释是用分界符/*和*/来设置的。

 

2.5.5  Java实现

 

    在2010年1月27日收购Sun Microsystems公司后,甲骨文公司是目前Java SE平台正式实现的所有者。这个实现是基于Sun公司对Java的原始实现。甲骨文的实现适用于Microsoft Windows(仍然适用于XP,而目前官方只支持晚期版本)、macOS、Linux和Solaris。由于Java缺乏被Ecma International、ISO/IEC、ANSI或其他第三方标准组织认可的正式标准化,因此Oracle的实现是事实上的标准。

    Oracle的实现被打包成两个不同的发行版。Java Runtime Environment (JRE),它包含了Java SE平台上运行Java程序所需的部分内容,面向最终用户;Java Development Kit (JDK),面向软件开发人员,包括Java编译器、Javadoc、Jar和调试器等开发工具。Oracle还发布了GraalVM,这是一个高性能的Java动态编译器和解释器。

    OpenJDK是另一个值得注意的Java SE实现,它是由GNU GPL授权的。这个实现是从Sun开始在GPL下发布Java源代码开始的。从Java SE 7开始,OpenJDK就是官方的Java参考实现。

 

    Java的目标是使所有的Java实现都兼容。从历史上看,Sun公司在使用Java品牌的商标许可中坚持要求所有的实现都要兼容。在Sun公司发现微软的实现不支持RMI或JNI,并添加了自己的平台特定功能后,与微软发生了法律纠纷。Sun在1997年起诉,并在2001年赢得了2000万美元的和解,以及法院命令强制执行Sun公司的许可条款。

    独立于平台的Java对于Java EE来说是必不可少的,要认证一个实现,还需要更严格的验证。这种环境使得可移植的服务器端应用得以实现。

 

2.5.6  在Java平台之外的使用

 

    Java编程语言需要有一个软件平台才能执行编译后的程序。

    甲骨文公司提供了Java平台,用于Java程序的运行。Android SDK是一个替代软件平台,主要用于开发自有GUI系统的Android应用程序。

 

2.5.6.1 Android

 

    Java语言是开放源码移动操作系统Android的一个关键支柱。虽然基于Linux内核构建的Android主要是用C语言编写的,但Android SDK使用Java语言作为Android应用程序的基础,但并没有使用其标准的GUI、SE、ME或其他既定的Java标准,Android SDK支持的字节码语言与Java字节码不兼容,运行在自己的虚拟机上,针对智能手机和平板电脑等低内存设备进行了优化。根据Android版本的不同,字节码要么由Dalvik虚拟机解释,要么由Android Runtime编译成原生代码。

    Android并没有提供完整的Java SE标准库,尽管Android SDK中确实包含了一个独立的Java SE标准库的大部分子集的实现。它支持Java 6和一些Java 7功能,提供了与标准库(Apache Harmony)兼容的实现。

 

2.5.6.2 争论

 

    在Android中使用Java相关技术导致了甲骨文和谷歌之间的法律纠纷。2012年5月7日,旧金山的一个陪审团认为,如果API可以获得版权,那么谷歌在Android设备中使用Java侵犯了甲骨文的版权,地区法官William Haskell Alsup于2012年5月31日裁定,API不能获得版权,但这一判决于2014年5月被美国联邦巡回上诉法院推翻。2016年5月26日,地区法院做出了有利于谷歌的判决,裁定Android中的Java API的版权侵权行为属于合理使用,2018年3月,这一判决被上诉法院推翻,将判定损害赔偿的案件发回旧金山联邦法院,2019年1月,谷歌向美国最高法院提出了诉讼请求,要求申请诉讼程序令状,对上诉法院做出的两项有利于甲骨文的判决提出质疑。

 

3   小结

我们在本文中对Java语言的特性和技术特点等进行了学习和探索, 希望可以抛砖引玉,对各位朋友有所裨益。

欢迎批评指正。

Ubuntu 22.04 安装 PostgreSQL + AGE + pgvector 完全指南 本教程详细介绍了在Ubuntu 22.04服务器上安装PostgreSQL数据库,并为其添加AGE图数据库扩展和pgvector向量搜索扩展的步骤。首先,更新系统并安装PostgreSQL,然后通过源码构建并安装AGE和pgvector扩展。接着,配置PostgreSQL以使用这些扩展,并可选地允许远程连接。教程还包括创建用户、设置密码、验证安装以及安装后的优化建议。最后,提供了常见问题的解决方法。通过本教程,用户可以在同一数据库中处理关系型数据、图数据和向量数据,为现代应用程序提供强大的数据支持。 阅读详情

相关推荐

Qt中多线程的使用(一)

我们要实现的是读取大文件qtgui.index的内容加入文本框中。 很容易想到的方法: QFile* file = new QFile("E:\qtgui.index"); file-&gt;open(QIODevice::ReadOnly); QTextStream *stream = new QTextStream(file); while(!st...

yao5hed的专栏 1万+

1. Java 特点

Java十个基本特点

Kim-Hyunyeon的博客 1126

三维模型转变为点云模型的好工具——CloudCompare使用小记

普通三维模型能够直观地展示物体的三维全貌,但是在一些场合需要将三维模型变为相应的点云模型进行展示,而使用激光雷达等传感器采集到的点云信息往往只能反应模型表面的情况,或是使用PCL库中的可执行文件进行转换,这两种操作较为麻烦。笔者最近就遇到了这样一个情况,找到了一个名叫CloudCompare(CC)的软件,能够支持将多种文件格式的三维模型转变为点云模型。以下将本人在使用过程中所使用到的一些操作简记下来供朋友们和将来的自己参考。 一、下载 CloudCompare是一款免费软件,其可以在CloudComp

hdlwyt的博客 2万+

java的技术特点_Java技术的特点

Java技术是一套完整的IT行业解决方案,其中包含了很多技术。最初是从解决家电设备联网通讯的方案发展起来的,其特点适用于Internet,于是在Internet广泛应用的环境下,迅速发展成为一种计算机语言、一个平台、一个网络计算的架构。从整体上划分,Java技术可分成Java编程语言和Java平台。Java编程语言是一种高级编程语言,Java平台是指程序运行的硬件或软件环境。Java编程语言的特征...

weixin_33140809的博客 1864

innovus:Clock Gating Check设置与报告

看图后发现,在设置clock gating check之前报告也会有clock gating check的值,这个就是因为timing library中会像reg一样定 library setup time值,如下图。我们常用set_clock_gating_check -setup去过约束Place阶段reg2cgate的时序,以防CTS后由于tree不平导致的时序违例。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 1015

Windows下超详细安装Anaconda3以及jupyter notebook

1.下载Anaconda安装包 Anaconda官网网站:https://www.anaconda.com/products/individual下载安装包速度比较慢,国内小伙伴不建议尝试。 我们可以使用清华大学开源软件镜像站:清华大学开源软件镜像站:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/,请选择适合自己系统自行下载。 下载完成后如下图: 1.安装Anaconda安装包 1.打开安装包,点击Next 2.点击I Agre

m0_37957160的博客 3802

Java基础知识总结(超详细整理)

Java语言的特点,1.面向对象(OOP)就是Java语言的基础,也是Java语言的重要特性。面向对象的概念:生活中的一切事物都可以被称之为对象,生活中随处可见的事物就是一个对象,我们可以将这些事物的状态特征(属性)以及行为特征(方法)提取并出来,并以固定的形式表示。 2.简单好用,Java语言是由C和C++演变而来的,它省略了C语言中所有的难以理解、容易混淆的特性(比如指针),变得更加严谨、简洁、易使用。 3.健壮性、Java的安全检查机制,将许多程序中的错误扼杀在摇蓝之中。 另外,在

龙源IT 的博客 44万+

高通平台开发系列讲解(USB篇)MBIM协议详解

📢本文主要介绍高通平台USB网卡MBIM协议。

内核笔记 5440

Java之Java特点

而在Java语言中, Java自带的虚拟机很好地实现了跨平台性。 Java源程序代码经过编译后生成二进制的字节码是与平台无关的,但是可被Java虚拟机识别的一种机器码指令。 Java虚拟机提供了一个字节码到底层硬件平台及操作系统的屏障,使得Java语言具备跨平台性。 [](()4.分布式 =================================================================== Java包括一个支持HTTP和FTP等基于TCP/IP协议的子库。因此,Java应用程

didi558的博客 473

OpenOCD入门到精通:第 4 章 配置文件体系详解

本文深入解析OpenOCD配置文件的体系结构和工作机制。首先介绍了配置文件的搜索路径优先级和加载顺序,以及配置阶段与运行阶段的区别。然后详细分析了interface配置文件的适配器参数调优方法,包括ST-Link、CMSIS-DAP和FTDI等常见调试器的配置示例。最后重点讲解了target配置文件的核心结构,包括TAP声明、目标创建和工作区设置等关键步骤,并以stm32f1x为例展示了完整的配置流程。通过本文可以全面了解OpenOCD配置文件的分层设计理念和参数化配置方法。

从事嵌入式linux android驱动开发,拥有全栈能力 595

基于simulink的BMS系统中电池单体故障隔离与恢复建模

本文介绍了使用Simulink构建BMS电池单体故障诊断与容错控制模型的方法。主要内容包括:1)搭建12串锂电池组模型;2)实现单体故障注入(过压、断线等);3)设计故障诊断与隔离模块(采用Stateflow状态机);4)开发恢复判断逻辑(需满足电压、温度等条件);5)系统监控与仿真设置。文章还提供了工程实践建议,如防环流设计、通信冗余等,并指出进阶方向(多故障处理、AI预警等)。该模型适用于新能源汽车、储能系统的BMS设计,可提高系统可靠性和安全性。

xiaoheshang_123的博客 141

java语言的特点_Java语言有什么特点?

Java语言共有十大特点,分别为:简单性、面向对象、分布性、编译和解释性、稳健性、安全性、可移植性、高性能、多线索性、动态性。1、简单性:Java语言继承了C++语言的优点,去掉了C++中学习起来比较难的多继承、指针等概念,所以Java语言学习起来更简单,使用起来也更方便。2、面向对象:Java是一种面向对象的编程语言。3、分布性:Java设计成支持在网络上应用,它是分布式语言。所以只要用Java...

weixin_29505469的博客 3201

嵌入式Modbus协议面试题及参考答案

Modbus 协议采用主从模式进行通信,这种模式定义明确,便于在工业环境中实现设备之间的有序数据交互。在主从模式中,存在一个主站(Master)和多个从站(Slave)。主站通常是工业控制系统中的上位机,如 PLC、工控机等,它负责发起通信请求,控制整个通信过程。从站则是各种现场设备,如传感器、执行器等,它们接收主站的请求,并根据请求进行相应的操作,然后将结果返回给主站。主站的主要功能包括:发起数据读取或写入请求、控制通信的时序和流程、处理从站返回的数据。

大模型大数据攻城狮的专栏 2046

2024年Java最全Java语言特性和技术特点探究(1),java敏捷开发模式面试题

面试难免让人焦虑不安。经历过的人都懂的。但是如果你提前预测面试官要问你的问题并想出得体的回答方式,就会容易很多。此外,都说“面试造火箭,工作拧螺丝”,那对于准备面试的朋友,你只需懂一个字:刷!给我刷刷刷刷,使劲儿刷刷刷刷刷!今天既是来谈面试的,那就必须得来整点面试真题,这不花了我整28天,做了份“Java一线大厂高岗面试题解析合集:JAVA基础-中级-高级面试+SSM框架+分布式+性能调优+微服务+并发编程+网络+设计模式+数据结构与算法等”

2301_82243979的博客 984

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Java语言的特点特性

Java语言的主要特点: 1. 跨平台性 所谓的跨平台性,是指软件可以不受计算机硬件和操作系统的约束而在任意计算机环境下正常运行。这是软件发展的趋势和编程人员追求的目标。之所以这样说,是因为计算机硬件的种类繁多,操作系统也各不相同,不同的用户和公司有自己不同的计算机环境偏好,而软件为了能在这些不同的环境里正常运行,就需要独立于这些平台。而在Java语言中, Java自带的虚拟机很好地实现了跨平台性。 Java源程序代码经过编译后生成二进制的字节码是与平台无关的,但是可被Java虚拟机识别的一种机器码指令

编程领域的博客 8611

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Java语言特点

Java语言是简单的 Java语言的语法与C语言和C++语言很接近,从某种意义上讲,它是由C和C++演变而来,使得大多数程序员很容易学习和使用。 对C++来说进行了简化和一定的提高,如:使用接口代替了复杂的多重继承以及取消了指针,还通过实现垃圾自动回收机制,大大简化了程序员的资源释放管理工作。 提供了丰富的类库和API文档,以及第三方开发包工具包,还有大量的基于Java的开源项目,帮助程序设计人...

ThinkWon的博客 3万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Java语言的特点

Java 语言的风格很像 C 语言和 C++ 语言,是一种纯粹的面向对象语言,它继承了 C++ 语言面向对象的技术核心,但是拋弃了 C++ 的一些缺点,比如说容易引起错误的指针以及多继承等,同时也增加了垃圾回收机制,释放掉不被使用的内存空间,解决了管理内存空间的烦恼。 Java 语言是一种分布式的面向对象语言,具有面向对象、平台无关性、简单性、解释执行、多线程、安全性等很多特点,下面针对这些特点进行逐一介绍。 面向对象 Java 是一种面向对象的语言,它对对象中的类、对象、继承、封装、多态、接口、包等均有

爱吐泡泡的狗子 4173

Java的特点和优点

Java的特点 Java语言是一种优秀的编程语言。它最大的优点就是与平台无关,在Windows 9x、Windows NT、Solaris、Linux、MacOS以及其它平台上,都可以使用相同的代码。“一次编写,到处运行”的特点,使其在互联网上广泛采用。 由于Java语言的设计者们十分熟悉C++语言,所以在设计时很好地借鉴了C++语言。可以说,Java语言是一种比C++语言“还面向对象”...

lili2922的博客 4万+

Java语言的特点和特性

1.  Java语言的主要特点:    1. 跨平台性    所谓的跨平台性,是指软件可以不受计算机硬件和操作系统的约束而在任意计算机环境下正常运行。这是软件发展的趋势和编程人员追求的目标。之所以这样说,是因为计算机硬件的种类繁多,操作系统也各不相同,不同的用户和公司有自己不同的计算机环境偏好,而软件为了能在这些不同的环境里正常运行,就需要独立于这些平台。而在Java语言中, Java自带的虚...

weixin_30950887的博客 333

简要描述java语言的特点是什么_java语言的特点是什么

Java语言本身的面向对象、简单、平台无关性、安全性、多线程等特点java语言的结构与编写方式,与c++语言类似,因此学习Java语言,不仅要了解Java语言特点,同时还要有程序设计基础和面向对象的概念。下面yjbys这就为大家分享java语言的最新特点,欢迎阅读!Java语言特点如下:特点一:简单、高效Java语言与C++类似,如果用户了解C++和面向对象的概念,就可以很快编写出Java程序;此...

weixin_30016961的博客 3391

java语言的主要特点

Java语言是是一门面向对象编程语言,具有以下九大特点: 一.简单性: Java是纯面向对象语言,语法简单明了,易于掌握。 Java使用接口取代了多重继承,并且取消了指针,因为多重继承和指针会使程序变得复杂。 Java还会自动地收集内存垃圾,使得内存管理变得更为简单。 Java还提供了丰富的类库、API文档以及第三方开发包,还有大量Java的开源项目。 二.面向对象性: 面向对象性事Java语言的...

weixin_44827983的博客 7609

java特点和特性

1.  Java语言的主要特点:    1. 跨平台性    所谓的跨平台性,是指软件可以不受计算机硬件和操作系统的约束而在任意计算机环境下正常运行。这是软件发展的趋势和编程人员追求的目标。之所以这样说,是因为计算机硬件的种类繁多,操作系统也各不相同,不同的用户和公司有自己不同的计算机环境偏好,而软件为了能在这些不同的环境里正常运行,就需要独立于这些平台。而在Java语言中, Java自...

qq_40345954的博客 635

Java语言的重要特点

目录Java语言的特点1. Java语言是面向对象的(oop)2.Java语言是健壮的,Java的强类型机制、异常处理、Java的垃圾回收器 等是Java程序健壮性的重要保障3.Java语言是跨平台性的(即一个编译好的.class文件 可以在多个系统下运行,这种特性称为 跨平台性) 3.1.Java的运行机制及运行流程 3.2.什么是JDK、JRE 3.2.1 JRE基本介绍4.Java语言是解释型语言

sunshine7058的博客 886

Java语言有哪些特点?

1)简单性 2)面向对象 3)分布式 4)健壮性 5)安全性 6)体系结构中立 7)可移植性 8)解释型 9)高性能 10)多线程 11)动态性 1.简单性: Java语言是C++语言的一个“纯净”版本。没有头文件、指针运算、结构、联合、操作符重载、虚基类等。 2.面向对象 面向对象即面向数据。Java的面向对象特性与C++旗鼓相当,Java与C++的主要不同点在于多继承,在Java中,取而代之的...

qq_43251032的博客 2万+

二、Java语言的特点

相对 c、c++。Java看起来设计得很像C++,但是为了使语言小和容易熟悉,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的。例如,Java不支持goto语句,代之以提供break和continue语句以及异常处理。Java还剔除了C++的操作符过载(overload)和多继承特征,并且不使用主文件,免去了预处理程序。因为Java没有结构,数组和串都是对象,所以不需要指针。

general_pp的博客 1550

Java 语言有哪些特点?与Java 语言有哪些特点?

所以, Java 程序运行时相对来说还是高效的(不过,和 C、 C++,Rust,Go 等语言还是有一定差距的),而且,由于字节码并不针对一种特定的机器,因此,Java 程序无须重新编译便可在多种不同操作系统的计算机上运行。HotSpot 采用了惰性评估(Lazy Evaluation)的做法,根据二八定律,消耗大部分系统资源的只有那一小部分的代码(热点代码),而这也就是 JIT 所需要编译的部分。JVM 会根据代码每次被执行的情况收集信息并相应地做出一些优化,因此执行的次数越多,它的速度就越快。

CHEN_DA_PING的博客 662
上一篇: Java中堆和栈的区别
下一篇: Java 类中可以覆盖静态方法吗?
Java奥利给
博客等级 码龄6年 150粉丝 154原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值