区块链和 Java:它们有可比性吗?
简单来说,区块链是一种特殊的分布式网络,Java是一种编程语言。那么我们如何比较呢?好像我们做不到?
等一下!仍有许多相似之处
它们是不同的,但它们有许多共同点或两者之间的相似之处。区块链网络现在具有嵌入式编程语言。例如,以太坊有Solidity 。同时,Java 集成了一个庞大的生态系统,可以创建类似于区块链的解决方案(在某种程度上)。
区块链基础架构:网状网络
所有基于区块链的解决方案都基于单秩网络。在这种情况下,一旦任何节点提交事务,每个参与者的网状网络彼此相等,并复制具有相同状态的相同节点。所有其他节点(通常是一半 + 1)验证它并确认或拒绝。成功批准后,所有节点都保存该交易并同步。
企业基础架构客户端服务器网络
经典的企业架构基于客户端-服务器架构。即使有许多服务器节点也没有任何区别。所有客户端都无权访问服务器的数据。
以太坊和 Java 比较
两种语言都生活在截然不同的生态系统中,但我们仍然可以通过一些标准来比较它们。让我们回顾一下其中的一些:
保留关键字的数量
每种语言都有保留关键字。这样的关键字可以对语言特征和灵活性进行非常粗略的估计。
- Java 有 67 个保留关键字,但其中一些已经过时。
- Solidity 有 31 个关键字。
一般来说,Java 是一种更加灵活的通用语言,它通过本机调用与其他语言集成。Solidity 是一种非常特殊的语言,它专注于一致性和安全性。
变量类型
Java 有 8 种基本类型,从 Boolean 到 double(带浮点)。可能的对象类型的总数是巨大的,涵盖了开发人员的绝大多数需求。
Solidity 有 6 种类型,其中一些不完全支持。其中,有一种非常具体:地址类型。可靠的类型是布尔型、整数(uint、int)和字符串。
部署过程
部署过程取决于生态系统。Java 应用程序部署到 JVM,但在大多数情况下,JVM 隐藏在更大的东西中:
- 简单的JVM
- 应用程序 Java EE 服务器,如 Tomcat、JBoss 等。
- 轻量级容器,例如 Spring、Google Guice、Dropwizard
Solidity 编译的合约只能部署到以太坊网络,或者只需保存到以太坊虚拟机 (EVM)。每个 EVM 的状态在网络中的所有 EVM 之间同步。
语言时代和当前发展
Java 第一次发布是在 1996 年,现在每年都有新版本发布。所以在Java 26 年之后,它正在改进它的特性。第一版和最新的 17 版之间有很大的不同。
以太坊和 Solidity 第一次发布是在 2015 年。Solidity 也在不断发展,每年都会提供新的微小变化。很快,以太坊将发布新版本 2,该版本将发生重大变化。
IDE 或开发接口
就 Java 作为一门相当古老的语言而言,它有许多开发软件可供选择,例如:
- IntelliJ IDEA:最强大和最受欢迎的付费版本
- Eclipse:以前的领导者,但它一直在失去人气
- NetBeans:我认为它现在已经是死气沉沉的软件了。
还值得一提的是,Java 因其庞大的历史和社区而拥有许多插件。
Solidity 主要有一个 IDE,即 Remix。Remix 是基于浏览器的,并且非常有限。但是,它不需要任何桌面安装或任何付费软件。这种基于 Web 界面的 IDE 甚至与 IntelliJ IDEA 之类的 Java IDE 都不相近。
古典建筑
Java 很久以前就征服了企业界。如果我们谈论经典的 Java Web 应用程序,那么客户端-服务器模式将如下所示:
对于以太坊网络,每个节点都是平等的。在每个节点内部,我们都有后端 (EVM) 和连接器以将其与前端连接。每个 EVM 都在不断地与所有其他节点同步其状态。
无状态与有状态
在经典架构中,Java 是一个无状态层,将所有数据存储在数据库或文件系统中。JVM 重新启动后,存储在应用层上的所有数据都会消失。
在以太坊网络中,EVM 节点是一个相当有状态的数据库,智能合约存在于其中。内部以太坊存储也称为区块链。这意味着任何 EVM 重启都不会影响其状态,所有数据将在与网络中的其他节点同步后恢复。