关于原生程序与壳中程序的议论

2024-02-07 04:48
文章标签 程序 原生 议论

本文主要是介绍关于原生程序与壳中程序的议论,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在所有用户windows机器上都能直接跑的程序,如果不采用微软系的语言,如VB,C++,C#等,而采用Java,Python,Ruby之类的语言开发,最终的结果在体积上一定远大于微软系语言开发的程序,因为这些语言不具备直接生成exe执行文件的能力,都需要额外的中间层来提供环境,而这个中间层的体积往往不小。
最直观的道理就是,java程序只能在装有java虚拟机的机器上跑,如果你想突破这个限制,让它跑在任何一台机器上,那你必须把虚拟机打包在你的程序里一并提供给用户,最终还是改变不了要跑在虚拟机里的命运,唯一的好处是不用客户手动安装虚拟机了,其他语言同理。
这就是原生程序与加壳程序的区别,原生程序的优点在针对特定平台编译,体积小,速度快,而加壳程序因为必须把壳引入到用户机器中,体积臃肿,加壳程序的优点在可以用程序员自己舒服的语言开发,而且甚至可以跨平台开发——发布的时候针对不同的平台加不同的壳就OK了,java的招牌式口号“一次编写,处处运行”前提正是其程序都是壳中程序,不同的壳(即java虚拟机)向上暴露的接口都是一样的,这样壳中程序可以在安稳的环境中编写。
在微软系的语言中.NET是个有意思的角色,严格讲它编写出的程序也是壳中程序,但这个壳是微软的“官方壳”,不管你用到的第一个使用.net壳的windows程序是什么,微软会引导你下载安装这个壳,之后一劳永逸,你再使用其他的壳中程序就不用再下载了。在这个角度上看,.net官方壳几乎与windows操作系统融为一体了,共同构成了应用程序的下层基础,把应用程序看做直接基于平台的原生程序也无妨了。
至于java开发的桌面程序,由于始终是小众奇葩的存在,而且不是微软官方支持的,如果你只发布官方程序,对非程序员的用户来说,下载安装jdk和配置环境变量实在是过于复杂,所以为了方便用户安装,你只得把虚拟机一并打包进发布的程序中,这造成程序的体积大大加大了,增加服务器磁盘占用、下载流量、下载时间、用户磁盘占用——总之是缺点多多。其他语言如python、ruby等桌面程序的开发同理。
在手机开发中,用html5开发的手机应用可以一次开发、两次打包,分别成为安卓和苹果的APP,与之前提到的所有问题最大的不同在于,html5的界面程序可以不存放于用户本地,而存放于远端的服务器上,这带来的好处是减少文件大小和方便版本升级,而且web前端的人才实力和数量决定了用web技术做程序界面是个好主意。唯一的问题是,由于壳的存在,这种中转的方式必然导致程序性能不如原生程序,这个问题是一切壳中程序共有的,甚至.net也无法避免。只是,相对于壳带来的当然损失,程序员实力问题导致的性能差异是更主要的原因,在不是“只要用壳就一定不行”的情况下,程序员的架构能力和编码能力才是程序性能好坏的最大决定因素,总结说就是壳中程序的性能输在了起跑线上,但还有机会治疗。
这两天学习的node-webkit技术,是使用javascript语言编写桌面程序的技术,容易想到想达成这个目的,必须解决两个问题,一是javascript在操作系统中的运行环境,二是javascript在操作系统中显示图形界面的解决方案。第一个问题的解决者是Node.js,而第二个问题的解决者是webkit,因此这项技术理所当然地命名为了node-webkit。
正如用html5做安卓苹果应用、用nodejs做服务器端开发一样,这项技术的出现带来的好处,一是让前端程序员有了做windows界面程序的可能性,二是让前端美工有了做windows界面的可能性。我个人感觉最有趣的一点,由于这个技术栈中没有任何技术需要编译,html和css是声明式语言,而javascript是解释型语言,这意味着可以随时在文件夹中点开源码,改变我的exe程序的内容。
可以把node-webkit提供的文件们看做一个exe程序模板,模板中镂空的部分即“程序界面和逻辑”需要程序员根据业务来填空,控制流还是在node-webkit手里,它在某些时候看看你的“填空”,说“哦原来你要这样啊可以”,然后执行下去。这是典型的“框架”的工作,它从你手里抢来了控制权,控制反转,你沦为编写局部代码的凡人。一切壳的职责都是如此,它给了你灵活自由的DIY发挥空间,但你只能在这个空间内施展才华。
你施展才华的方式,就是编写html文件和javascript代码。由于nodejs的存在,你除了编写浏览器脚本还能编写与操作系统和网络相关的脚本,以及你需要的一切。Node.js在服务端已经无所不能,你的桌面程序也无所不能,服务端能引用的库,你当然都可以使用。而你在B/S中能实现的前端样式和布局,由于webkit的存在,也都能在你的桌面程序中大展身手。

这篇关于关于原生程序与壳中程序的议论的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/686553

相关文章

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

EMLOG程序单页友链和标签增加美化

单页友联效果图: 标签页面效果图: 源码介绍 EMLOG单页友情链接和TAG标签,友链单页文件代码main{width: 58%;是设置宽度 自己把设置成与您的网站宽度一样,如果自适应就填写100%,TAG文件不用修改 安装方法:把Links.php和tag.php上传到网站根目录即可,访问 域名/Links.php、域名/tag.php 所有模板适用,代码就不粘贴出来,已经打

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中,不同电脑的配置和操作系统(如Win11与Win7)可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行,需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下,使LabVIEW开发的程序保持稳定运行的有效策略。 LabVIEW版本兼容性 LabVIEW各版本对不同操作系统的支持存在差异。因此,在开发程序时,尽量使用

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

这些心智程序你安装了吗?

原文题目:《为什么聪明人也会做蠢事(四)》 心智程序 大脑有两个特征导致人类不够理性,一个是处理信息方面的缺陷,一个是心智程序出了问题。前者可以称为“认知吝啬鬼”,前几篇文章已经讨论了。本期主要讲心智程序这个方面。 心智程序这一概念由哈佛大学认知科学家大卫•帕金斯提出,指个体可以从记忆中提取出的规则、知识、程序和策略,以辅助我们决策判断和解决问题。如果把人脑比喻成计算机,那心智程序就是人脑的

uniapp设置微信小程序的交互反馈

链接:uni.showToast(OBJECT) | uni-app官网 (dcloud.net.cn) 设置操作成功的弹窗: title是我们弹窗提示的文字 showToast是我们在加载的时候进入就会弹出的提示。 2.设置失败的提示窗口和标签 icon:'error'是设置我们失败的logo 设置的文字上限是7个文字,如果需要设置的提示文字过长就需要设置icon并给

基于SpringBoot的宠物服务系统+uniapp小程序+LW参考示例

系列文章目录 1.基于SSM的洗衣房管理系统+原生微信小程序+LW参考示例 2.基于SpringBoot的宠物摄影网站管理系统+LW参考示例 3.基于SpringBoot+Vue的企业人事管理系统+LW参考示例 4.基于SSM的高校实验室管理系统+LW参考示例 5.基于SpringBoot的二手数码回收系统+原生微信小程序+LW参考示例 6.基于SSM的民宿预订管理系统+LW参考示例 7.基于

Spring Roo 实站( 一 )部署安装 第一个示例程序

转自:http://blog.csdn.net/jun55xiu/article/details/9380213 一:安装 注:可以参与官网spring-roo: static.springsource.org/spring-roo/reference/html/intro.html#intro-exploring-sampleROO_OPTS http://stati

未来工作趋势:零工小程序在共享经济中的作用

经济在不断发展的同时,科技也在飞速发展。零工经济作为一种新兴的工作模式,正在全球范围内迅速崛起。特别是在中国,随着数字经济的蓬勃发展和共享经济模式的深入推广,零工小程序在促进就业、提升资源利用效率方面显示出了巨大的潜力和价值。 一、零工经济的定义及现状 零工经济是指通过临时性、自由职业或项目制的工作形式,利用互联网平台快速匹配供需双方的新型经济模式。这种模式打破了传统全职工作的界限,为劳动