【互联网架构】聊一聊所谓的“跨语言、跨平台“

news2024/11/24 2:55:03

文章目录

  • 跨语言
  • 跨平台
  • 【饭后杂谈】为什么有人说Java的跨平台很鸡肋?


很多技术都具有跨语言、跨平台的特点
比如JSON是跨语言的、Java是跨平台的、UniAPP、Electron是跨平台的

跨语言和跨平台,是比较重要的一个特性。这些特性经常能够决定开发者是否要使用它

对于一项技术能不能跨语言、跨平台,我的理解是:基于一个语言特性设计的技术,就不能跨语言;基于一个平台特性设计的技术,就不能跨平台。
同理,设计一项技术时,如果这个技术独立于语言/平台特性,或者把语言/平台特性隐藏在调用接口层之下,那它就满足了跨语言、跨平台的基础要求


跨语言

不受语言限制,不需要让开发者关心在 不同编程语言 的影响的,就叫跨语言,也叫语言中立。

跨语言对什么最重要?

我认为 跨语言对"通信技术"最重要

在分布式、微服务日益强大的今天,让整体架构都采用统一的语言已经不切实际。况且更好用的语言(例如Golang)层出不穷,新事物总要慢慢取缔旧事物,跨语言通信早已不是什么新鲜事。

很多我们常用的通信技术都是跨语言的,比如通信协议(每个语言都支持TCP/IP协议族吧,这是硬性需求)、序列化方案(XML、JSON、Protobuf等)

而不跨语言的技术也有,比如golang的gob、java的serializable,这些语言自带的序列化不是跨语言的,它们包含了很多语言特性。


跨平台

不受平台限制,不需要让开发者关心在 不同平台 的影响的,就叫跨平台,也叫平台中立。

平台指的是运行环境,如CPU架构不同(引发的指令集不同)、系统架构不同(导致的API不同)、设备形态不同(大小、运行方式、操作方式等)
例如:Windows、MacOS、Linux、手机、平板、web网页、小程序、穿戴设备(手表、手环等)、PS(PlayStation)、NS(Nintendo Switch)等等

跨平台对什么最重要?

我认为 跨平台对"编程语言和GUI框架"很重要
因为不同平台的架构、GUI-API都不一样。

例如 UniAPP,可以编写一套代码,同时编译到多个平台(小程序、Web、IOS APP、Android APP)运行的UI框架。

例如 Java,一套代码编译之后的jar包,可以在Windows、MacOS、Linux、Solaris平台上运行,只需要在这些平台上安装对应平台的Java运行环境(JRE)即可

例如 GoLang,它的 交叉编译 技术让一套代码可以编译成任何平台的可执行程序。

尽管Java和Go的跨平台方法不一样,但他们都做到了跨平台,不需要开发者针对不同平台开发不同的代码。

当然也有不跨平台的技术。甚至还有不跨平台的序列化技术,现在看来是多么没有意义,如今作为一个序列化技术,"跨平台"应该是最基础的要求了。

摘自美团技术-序列化和反序列化
在这里插入图片描述

跨平台的缺陷
跨平台虽然很好,但也有缺陷。

以GUI而言,每个平台提供的GUI控件和属性多多少少有点差别。为了保证跨平台,UI框架可能只能提供所有平台都有的控件和属性,但这样做出来的UI就会过于简单、不好看。但如果调用平台的API,就可以做出相对好看的效果

UniAPP为了解决这个问题,提供了"条件编译"这个办法,可以针对不同平台,编写不同的定制性代码,这些代码会在编译时根据选择的平台决定是否参与编译。


【饭后杂谈】为什么有人说Java的跨平台很鸡肋?

为什么有人说 Java 的跨平台很鸡肋?

Java一直宣称的跨平台,其实现在来看已经不怎么重要了。因为现在主流的服务器开发技术也没有不支持跨平台的了。
像是go也可以跨平台编译,在哪个平台上运行直接打哪个平台的包即可。而且golang编译包还是exe,可以直接运行,不需要像java一样还要安装JRE。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


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

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

相关文章

软件测试项目实战,一比一还原可以写进简历的

项目一:ShopNC商城 项目概况: ShopNC商城是一个电子商务B2C电商平台系统,功能强大,安全便捷。适合企业及个人快速构建个性化网上商城。 包含PCIOS客户端Adroid客户端微商城,系统PC后台是基于ThinkPHP MVC构架开发的跨…

ubuntu-22.04.2网络配置和root登录和root远程ssh登录

配置网络: 1.查看网卡名称 ip addr(ifconfig 无法使用,需要后期安装) 2. 配置静态IP (1)进入网络配置文件: vim /etc/netplan/00-installer-config.yaml (2)按一下 i ,进入插入模式&#…

网络 | 数据链路层讲解 | MAC帧与APR协议

最大以太网帧大小指的是以太网帧从目的地址到冗余校验的总字节数。在802.3标准里,规定了一个以太网帧的数据部分(Payload)的最大长度是1500个字节,这个数也是MTU。在这个限制之下,最长的以太网帧包括6字节的目的地址(DMAC)、6字节的源地址(SM…

【C++】list的模拟实现

文章目录1.list 底层2. list的模拟实现1. list_node 类设计2. list类如何调用类型3 .push_back(正常实现)4. 迭代器的实现第一个模板参数Tconst迭代器第二个模板参数Ref第三个模板参数Ptr对list封装的理解5. insert6.push_back与 push_front(复用)7. erase8. pop_back与pop_fro…

[c++]list模拟实现

目录 前言: 学习类的方式: 1 类成员变量 1.1 list成员变量 1.2 结点结构体变量 1.3 迭代器成员变量 2 默认函数——构造 2.1 结点结构体构造函数 2.2 list构造函数 2.3 迭代器构造函数 3 迭代器实现 3.1 list部分 3.2 迭代器结构体部分 3.2…

Spring MVC程序开发(三大功能)

文章目录一、什么是Spring MVC?1.MVC定义2.MVC与Spring MVC的关系3.创建方式二、Spring MVC的核心功能1.连接功能浏览器获取前端接口和后端程序连接功能实现get和post的区别Spring Boot热部署2.获取参数(1)传递单个参数(2)传递对…

信捷 XDH Ethercat A_MOVER指令

本指令以相对位置运动 如果当前位置在p点,执行本A_MOVER指令结束后,相对p点前移或后退一段距离,这个距离需要在指令里指定。每次执行A_MOVER都是执行前的当前位置为参考点,只要目标位置不为0,都会运动。上图中&#xf…

MyBatis-1:基础概念+环境配置

什么是MyBatis?MyBatis是一款优秀的持久层框架,支持自定义sql,存储过程以及高级映射。MyBatis就是可以让我们更加简单的实现程序和数据库之间进行交互的一个工具。可以让我们更加简单的操作和读取数据库的内容。MyBatis的官网:htt…

弱监督实例分割 Box-supervised Instance Segmentation with Level Set Evolution 论文笔记

弱监督实例分割 Box-supervised Instance Segmentation with Level Set Evolution 论文笔记一、Abstract二、引言三、相关工作3.1 基于 Box 的实例分割3.2 基于层级的分割四、提出的方法4.1 图像分割中的层级模型4.2 基于 Box 的实例分割在 Bounding Box 内的层级进化输入的数据…

elasticsearch 分布式搜索引擎3

1.数据聚合 **聚合(aggregations)**可以让我们极其方便的实现对数据的统计、分析、运算。例如: 什么品牌的手机最受欢迎?这些手机的平均价格、最高价格、最低价格?这些手机每月的销售情况如何? 实现这些…

Altium Designer(AD)软件使用记录04-AD设计文件输出汇总

目录Altium Designer(AD)软件使用记录04-AD设计文件输出汇总准备工作1、放置层标识(标清每个层的顺序)2、放置钻孔图(表明孔的一些参数)3、设置原点坐标一、文件输出1、Gerber文件(光绘文件)2、钻孔文件3、…

EasyExcell导出excel添加水印

EasyExcell导出excel添加水印1、添加easyExcel相关依赖2、准备基础工具类3、创建水印handler类4、创建单元测试类WriteTest.class5、测试结果1、添加easyExcel相关依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId&…

Reactor模式

Reactor是一种设计模式&#xff0c;可以用于构建高并发的网络服务器。 Reactor模式的好处在于&#xff1a;可以在一个或多个reactor线程使用多路复用技术去管理所有网络连接连接建立、IO请求&#xff0c;保证工作线程不被IO阻塞。 前置知识&#xff1a;IO多路复用技术 1. 传统网…

如何通过外贸网站SEO优化,提升您的品牌曝光度和海外业务销售额?

随着全球化的不断推进和互联网的普及&#xff0c;越来越多的外贸企业开始重视SEO优化&#xff0c;以提升自身品牌的曝光度和海外业务的销售额。 但是&#xff0c;对于许多外贸企业而言&#xff0c;SEO优化似乎是一个非常陌生的领域&#xff0c;他们并不清楚该如何进行优化。 …

两会特稿 | 项国就书法学术论文入编《中国民族博览》国家一级大型文化类期刊

2022 年 7 月&#xff0c;著名书法家项国就撰写的书法学术论文《探究〈散氏盘〉与其临创感悟》入编国家一级大型文化类期刊《中国民族博览》&#xff0c;并于 2023 年 1 月正式出刊发表。 据悉&#xff0c;《散氏盘》是我国最重要的书法艺术形式之一&#xff0c;研究《散氏盘…

并发编程之AtomicUnsafe

目录 原子操作 定义 术语 处理器如何实现原子操作 处理器自动保证基本内存操作的原子性 使用总线锁保证原子性 使用缓存锁保证原子性 Java当中如何实现原子操作 Atomic 定义 原子更新基本类型类 原子更新数组类 原子更新引用类型 原子更新字段类 Unsafe应用解析…

【MySQL】MySQL的锁机制

目录 概述 MyISAM 表锁 InnoDB行锁 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制&#xff08;避免争抢&#xff09;。 在数据库中&#xff0c;除传统的 计算资源&#xff08;如 CPU、RAM、I/O 等&#xff09;的争用以外&#xff0c;数据也是一种供许多用户共…

中断以及 PIC可编程中断控制器

1 中断分为同步中断&#xff08;中断&#xff09;和异步中断&#xff08;异常&#xff09; 1.1 中断和异常的不同 中断由IO设备和定时器产生&#xff0c;用户的一次按键会引起中断。异步。 异常一般由程序错误产生或者由内核必须处理的异常条件产生。同步。缺页异常&#xff…

【Linux】关机、重启和用户登录注销

目录1 关机&重启命令1.1 基本介绍1.2 注意细节2 用户登录和注销2.1 基本介绍2.2 使用细节1 关机&重启命令 1.1 基本介绍 shutdown -h now          立刻关机shutdown -h 1            “hello&#xff0c;1分钟后会关机了”shutdown -r now   …

【hadoop】介绍

目录 介绍 版本 优势 大数据技术生态体系 介绍 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。 解决 存储和分析计算Google在大数据方面的三篇论文GFS --->HDFS Map-Reduce --->MR BigTable --->HBaseHadoop创始人Doug Cutting版本 Hadoop 三大发行版本&a…