API,SDK,CLI,库,框架,IDE等的区别
一.API
API 是一个允许软件与其他软件交互的 接口。 这是其名称的一部分——API,应用程序编程接口——并且是其功能的核心。
API 有多种形式和大小。读者可能会用来细读 网站的浏览器使用各种 API 集,以便将用户命令转换为可用函数、从服务器请求数据、将数据呈现为用户可查看的格式,并验证性能他们的要求。
甚至像在计算机上复制和粘贴这样简单的事情也使用了 API。复制文本将击键转换为命令,使用 API 将数据存储到剪贴板上的 RAM,然后使用相同的 API 将数据从一个应用程序传送到另一个应用程序,最后,在使用另一个 API 粘贴时呈现数据。
在万维网上,API 的功能略有不同。 Web API 允许不同系统之间的交互,通常用于特定用例。例如,当用户在社交媒体上进行交互时,他们正在使用 API 来发表评论、存储他们的数据、关注用户、删除推文等等。归根结底,Web API 只是一组指令,就像个人计算机 API 一样,但基于 Web 空间。
API 允许在稳定的环境中进行
一致的编码
,允许在每次提交请求时以可靠和可预测的方式交付
可复制的功能。
二.SDK
SDK
代表“软件开发工具包”,这是一种很好的思考方式——一个工具包。考虑将模型汽车或飞机放在一起。构建此模型时,需要一整套物品,包括套件本身、将它们组合在一起所需的工具、组装说明等。
SDK 提供一组工具、库、相关文档、代码示例、流程和/或指南,允许开发人员在特定平台上创建软件应用程序。如果 API 是一组允许创建某些东西的构建块,那么 SDK 就是一个成熟的
工作室
,它可以促进远远超出 API 允许范围的创建。
SDK 是一个工具包,其中包含允许开发人员创建系统和开发应用程序的说明。另一方面,API 是专门为明确用途而构建的——允许应用程序之间的通信。
毫无疑问,当 SDK 用于创建必须与其他应用程序通信的应用程序时,它包含用于此功能的 API。相反,API 用于通信,但不能单独用于创建全新的应用程序。
理解这一点的另一种方法是从房屋的角度来思考。API 是电话线,允许在室内和室外进行通信。SDK 是房子本身及其所有内容。
[1]
三.CLI
CLI(command-line interface)是NET Core命令行界面(
CLI)
跨平台工具,用于创建,还原程序包,构建,运行和发布.NET应用程序。.NET CLI 附带了 .NET SDK。
1、使用命令行CLI(command-line interface)工具用于安装、运行、卸载软件的原因是命令可以详细的显示出哪里出问题了,如果直接点击软件安装,不知道哪里出错了。cli对程序员提供更多信息
2、物联网、服务器是没有GUI界面的,只能通过CLI和机器交换
3、有时候运行效率更高,可以把命令写成.bat文件。 [2]
四、库、框架、插件、组件、控件、扩展
库库Library:
库是为解决某种特定需求的程序功能集合;即library,如jQuery,常用于方便dom操作、解决浏览器兼容等问题。库(Library)是一系列预先定义好的数据结构和函数(对于面向对象语言来说,是类)的集合,程序员通过使用这些数据结构和函数实现功能。例如Moment.js是一个javascript库,提供了处理时间的一些函数。
框架Framework:
框架是一系列预先定义好的数据结构和函数,一般用于作为一个软件的骨架,但程序真正的功能还需要由开发者实现。框架和库的最大区别在于“控制反转”,当你使用一个库,你会调用库中的代码,而当你使用一个框架,框架会调用你的代码。框架和库是一个有交叉的概念,很多框架都是以库的形式发布的,例如Java的Spring MVC框架,其发布的jar包本身就是一个库。而一个库如果也能通过依赖反转的方式进行扩展,那也可以视为一个框架,例如Python的markdonw解析库Python Markdown,可以添加自定义的解析扩展,那么可以被视为一个markdonw解析框架。
插件Plugin:
参与程序内部运行环节的一段或多段代码集合;即Plugin,遵循一定规范写出来方便程序展示效果,拥有特定功能且方便调用。如轮播图和瀑布流插件。
扩展Extension:
使用程序API扩展程序适用面的一段或多段代码集合;即Extension。
组件Component:
可重复使用并且可以和其他对象进行交互的对象;即Component,能复用的js代码其实跟插件差不多,区别可能就是插件专注于特定功能而组件更专注于复用吧。
组件的本质是封装。一定程度上可以约等于模块化,调用者只需关注输入和输出,总思想就是分而治之、重复利用。低耦合; 组件解决资源整合问题、增强功能促进开发效率。提高可维护性,便于协同开发,每个模块都可以分拆为一个组件,例如异步请求组件,路由组件,各个视图组件。
组件(Component)一般是指软件系统的一部分,承担了特定的职责,可以独立于整个系统进行开发和测试,一个良好设计的组件应该可以在不同的软件系统中被使用(可复用)。
例如V8引擎是Chrome浏览器的一部分,负责运行javascript代码,这里V8引擎就可以视为一个组件。V8引擎同时也是Node.js的javascript解释器,这体现了组件的可复用性。
控件Control:
提供或实现用户界面功能的组件,控件即组件,反之不一定。即Control。
控件(Control)是gui编程的一个概念,一般来说一个最终用户可以看到的、可交互的组件,被称为一个控件。例如.NET编程中的System.Windows.Controls.Button是一个控件。
插件(Plugin)和扩展(extension)是两个很相似的概念,插件(或扩展)是对已有应用程序或者库的功能补充,一个软件的插件(或扩展)是实现了该软件预定义接口的组件,用来向已有的软件添加功能。
插件在目标软件发布时可以不预先包含,而是在运行时被使用者注册,然后再被目标软件调用。
加载项(Add-on)可以认为加载项是插件(或扩展)的子集,是仅针对应用程序来说的功能补充。一个插件的例子是Flash的浏览器插件,为浏览器实现了运行Flash程序的功能。
[3]
五、IDE
IDE是集成开发环境(Integrated Development Environment)缩写。
集成开发环境:包括代码编辑器、代码检测、代码调试器、译器/解释器、以及其他工具。
IDE是一种个编程软件,是集成了程序员语言开发中会需要的一些基本工具、基本环境和其他辅助功能的应用软件。
IDE一般包含三个主要组件:源代码编辑器(Editor)、编译器、解释器(Compiler、Interpreter)和调试器(Debugger)。
开发人员可以通过图形用户界面(GUI)访问这些组件、并且实现整个代码编译、调试和执行的过程。现在的IDE也提供其他帮助程序员提供开发效率的一些高级辅助功能,比如代码高亮,代码补全和提示,语法错误提示,函数追踪,断点调试等。常用的IDE有:
1.微软 Visual Studio(VS)
Visual Studio
支持创建各种类型的程序,包括从桌面应用、Web应用、移动APP、到视频游戏。对于初学者到高级专业开发人员来说都是最棒的开发工具。VS有可定制仪表板和可停靠的窗口。它支持多大36种不同的编程语言,如:ASP.NET、DHTML、JavaScript、Jscript、Visual Basic、Visual C#、Visual C ++、Visual F#,XAML及更多。这个支持列表还在每天实时的增长着。
2.苹果
Xcode
Xcode是Apple出品的Mac OS X下的集成开发环境。内置一系列的工具集用于为iPad,iPhone和Mac的应用开发。Xcode是一个单窗体界面,在这个界面中控件可以很容易地与实现代码进行连接。
Xcode支持AppleScript、C/C ++、Java、Swift 和Objective-C等.
Xcode 是发布 Mac、iPhone、iPad、Apple TV 和 Apple Watch 应用程序的必备工具包。Xcode 支持 Swift 5.3,代码编辑工具,多种编译器,包括图形化的调试工具,测试工具(如用于构建单元测试的 XC Test API 能力),并支持插件和基于 mac 模拟器的 SDK。
3.Sublime Text
Sublime Text 是一个文本
编辑器
(收费
软件
,可以无限期试用),同时也是一个先进的
代码
编辑器。Sublime Text是由程序员Jon Skinner于2008年1月份所开发出来,它最初被设计为一个具有丰富扩展功能的
Vim
。
Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,
Python
的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的
Python
API , Goto 功能,即时项目切换,多选择,多窗口等等。
Sublime
Text 是一个跨平台的编辑器,同时支持Windows、
Linux
、
Mac OS X
等操作系统。
[4]
4.Eclipse
Eclipse 主要是为 Java 开发人员打造的,长期以来一直被认为是顶级的免费 IDE。它也可以用一些包(
https://www.
eclipse.org/downloads/p
ackages/?ref=hackernoon.com
)来定制,这些包适用于 Javascript、Rust、Php、C 和 C++等的测试和开发工具。
它提供了一个庞大的插件( https:// marketplace.eclipse.org /?ref=hackernoon.com )生态系统,这使得它极其万能,适合范围非常广泛的开发项目。它还拥有一个活跃的、深度参与的开发者社区( https://www. eclipse.org/eclipseide/? ref=hackernoon.com )。
Eclipse Foundation 在持续更新( https:// wiki.eclipse.org/Simult aneous_Release?ref=hackernoon.com )Eclipse IDE,免费软件并不都是这样的。2020-09 版包括了嵌入式 Node.js,改进的 UI 和暗亮模式,自带一个 JRE,并支持 Java 15。它的 2020-12 版刚刚发布( https://www. eclipse.org/eclipse/new s/4.18/?ref=hackernoon.com ),所有包都支持 Linux aarch64。
缺点:
不可靠的插件,乏味的用户界面,不太适合过大的项目,因为 Eclipse 没有其他 IDE 所能获得的资金支持,所以插件没有经过严格的审查,因此可能会产生兼容性问题。一些用户称 Eclipse 的 UI 看起来比较陈旧,有时很难使用。因为 UI 是用户体验中不可或缺的一部分,并且会影响程序员的工作效率,所以拥有一个良好的界面是很有必要的。
优点:
Eclipse提供了许多用户在其他地方必须得购买的免费功能。此外,它与其他 IDE 相比,比较轻量级,并且没有官方的最低系统要求,比许多其他顶级 IDE 的系统需求更低,这使它成为新程序员或机器功能不太强大的程序员的理想选择。它的多功能性还使新程序员能够启动各种不同的项目。需要多功能编程工具的大型商业或企业项目会发现 Eclipse 是一款优秀的 IDE。
Eclipse 和 IntelliJ IDEA 是目前最流行的两个 Java IDE。无论你是专家还是初学者,Eclipse 都将是一款优秀的 IDE。 [5]
5.NetBeans
NetBeans 是一个免费开源的Java集成的开发环境软件,主要用于Java开发。适合从零开始或者对已有工程进行开发。NetBeans支持多种编译器,如CLang/LLVM、Cygwin(GNU)、MinGW和Oracle Solaris Studio。
NetBeans是一款跨平台的IDE,支持Windows,Linux,OS X和Solaris等多种平台。
NetBeans支持的编程语言有PHP、Ruby、JavaScript、Groovy、Grails和C/C++等开发语言。
[6]
6.Atom
Atom 是github专门为程序员推出的一个跨平台文本编辑器。Atom支持用Node.js编写插件和嵌入Git Contral,在Mac OS X、GNU/ Linux和Windows等平台上均可使用。Atom的特点在于git 原生支持,内置包管理器,智能自动补全,自带文件系统浏览器,同时支持自定义界面(更改展示、背景、UI等。ATOM还配备了标签式界面、多窗格布局、简单的文件浏览器、易于学习的曲线图表,新人上手更加容易。
区块链开发IDE:
1.Remix IDE
以太坊有很多用于编写和部署智能合约的工具,其中一款基于浏览器的IDE,称为Remix。Remix可用于使用名为Solidity的编程语言编写,调试,测试和部署智能合约。
下载地址:
https://
github.com/ethereum/rem
ix-desktop/releases
2.ChainIDE(国产)
ChainIDE 是由纯白矩阵开发的云端区块链集成开发环境(IDE)。实际开发中,源代码编译器是必备工具,此外还需要编辑器、提示器、解释器和调试器等辅助工具,IDE就是将这些开发工具打包在一起组合套装。目前,ChainIDE支持开放联盟链、Ethereum、Libra、Fisco等10多个可编程区块链的开发环境,并帮助100多个国家的开发者,辅助设计、编译、部署50多万份智能合约。
安装
编译器
或者IDE(集成开发环境),也叫搭建开发环境。
千里之行,始于足下。程序员一定要选择一款合适的、得心应手的编译器,它是程序员每天要使用的最重要的工具之一,是您完成梦想翱翔蓝天的翅膀。
参考
- ^ What is the Difference Between an API and an SDK? https://nordicapis.com/what-is-the-difference-between-an-api-and-an-sdk/
- ^ IDE 、SDK 、API区别、库、框架、组件、CLI https://www.cnblogs.com/cdaniu/p/15168197.html
- ^ 前端框架、组件与库的区别 https://blog.csdn.net/a519781181/article/details/78975689
- ^ Sublime Text https://baike.baidu.com/item/Sublime%20Text/6284835
- ^ 2021 年要考虑的 10 种最佳 IDE https://www.infoq.cn/article/pwajbi4wzsvxdlk0tfav
- ^ 编程界十大顶级IDE http://www.culmart.com/play/programming/489.html