0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

好多人问,必须正式介绍一下:deepin-IDE

深度操作系统 来源:深度操作系统 2023-09-04 16:34 次阅读

因为众所周知的原因,最近很多人都在讨论国产 IDE,有些 deepin 社区成员就会发出疑问:深度科技(deepin)有自己的 IDE 吗?

正在网友热议的时候,deepin 社区论坛上很快就出现一篇帖子,内容是关于 deepin-IDE 的使用手册,此贴一出立即炸出很多正在勤奋搬砖的小伙伴。

当然,也会有人紧跟时事发出灵魂一问:

969a0c88-4af5-11ee-97a6-92fbcf53809c.png

为了消除大家的疑问,本文就做一个正式回答,同时也顺带介绍一下 deepin 自己的 IDE。

为什么要做自己的 IDE

操作系统角度来说,要构建繁荣的生态环境,需要丰富和完善的基软件体系。开发库、封包格式、开发工具以及开发者支持,是逐步完善发展的过程。

开发库

在开发库方面,deepin 操作系统已经拥有了自己的 DTK(Development ToolKit)开发套件。DTK 具备4个核心模块、220+个类、2300+函数接口、11个辅助功能模块、10+个扩展接口模块,已经能够满足日常图形应用、业务应用、系统定制应用的开发需求。目前 deepin 操作系统上自研的浏览器、音乐、邮件等 40 余款原生应用全部使用 DTK 开发。

-DTK:https://github.com/linuxdeepin/dtk

封包格式

封包格式源于Linux系统的软件包管理器,例如 apt、up2date、 yum、portage 和 pacman 等。包管理器的多样性给用户带来了更多选择,但缺点也十分显著:它们的软件包无法互通。deepin 操作系统为了解决“一包多用”的问题,推出了“玲珑”软件包管理方案,彻底解决系统与应用、应用与应用之间因升级引起的兼容性问题。

-Linglong:https://github.com/linuxdeepin/linglong

-“玲珑”打包商店:https://store.linglong.dev/开发工具

在开发工具层面,成熟的 IDE 数不胜数,例如 VSCode、Visual Studio、QtCreator 等,这些成熟IDE都有一些共性,比如良好的扩展性,美观的界面和较强的易用性,最重要的是对应的生态都已经非常完善。但痛点在于,我们还没有自研的IDE工具。自研 IDE 是生态建设中非常重要的一环,也是开发者生态的集大成者。

首先,自研 IDE可以提供DTK、各种二开接口的开发支持,开发者可以基于开发库开发出对应业务功能的应用。其次,为了用上“玲珑”这样的好东西,自研 IDE 可以默认提供“玲珑”打包格式,一次打包即可覆盖全 Linux 生态环境。最后,为了便于开发者交流,增强社区活性,自研 IDE 可以集成开发者平台,使开发者汇聚在一起交流开发经验。由此看来,自研 IDE 势在必行!

按照 deepin 团队说干就干的风格,经过多年时间研发,deepin-IDE 就破壳了,它的最终目标就是将上述分散的内容整合到一起,形成一个高度统一、开放自由、资源丰富的生态建设利器。

deepin-IDE 当前完成情况

deepin-IDE 并不是突然冒出来的,在内部已经开发了多年时间,为什么一直都默默无闻呢?因为这期间都在不断完善特色功能,并攻克一些技术难题,还没有达到非常完善的地步。同时因为设计人员没有参与,所以整个界面由研发人员“原生”设计,非常时(朴)尚(素),至于好不好看呢,文末有功能预览图,大家看了再说。

首先带大家看看deepin-IDE的整体架构:

架构介绍

总体采用基于模块化框架开发,支持 C/C++JavaPython等多种编程语言,每一种开发语言均是以插件的方式接入。模块化设计一方面可以缩短产品研发与制造周期,增加产品系列,提高产品质量,快速应对市场变化;另一方面,也可以减少或消除对环境的不利影响,方便重用、升级、维修和独立卸载。其整体结构设计如下图所示:

96c2f7a6-4af5-11ee-97a6-92fbcf53809c.png

如上图所示,带颜色的模块均和特定的语言相关,对应通信中间件用的是 LSP(Language Server Protocol) 语言服务协议,可以基于该协议实现语法高亮、符号树、语法树等功能;调试相关的用的是 DAP(Debug Adapter Protocol) 调试适配协议,可以基于该协议实现被调试程序的启动、运行、断点命中、单步跳入、单步跳出等常用调试功能。通过中间协议的适配,解耦了语言业务功能与实际功能提供者的依赖,让语言扩展变得可行。

为了进一步提高扩展性,前、后端均以插件方式实现。

在前端通过接入一个新的语言插件来实现新语言的扩展,该插件用于实现语言相关的、特殊的业务逻辑,不用编写全量的代码,从而减轻了语言插件的代码负担。

在后端,通过插件方式可以更容易接入一个语言服务提供者。

根据上述描述,将语言相关的顶层数据流图绘制如下:

96e048ce-4af5-11ee-97a6-92fbcf53809c.jpg

功能介绍

deepin-IDE除了包含IDE常用功能,如智能编辑器、高度可扩展的命令系统、工程管理、构建管理系统、插件系统等之外,还支持多种兼容协议、多种开发语言、代码版本管理集成、低开销的实时性能分析工具等。总体而言,IDE常见功能都在表里

96ec013c-4af5-11ee-97a6-92fbcf53809c.jpg

版本管理

支持主流版本控制系统Git、SVN。

970a5042-4af5-11ee-97a6-92fbcf53809c.jpg

协议支持

971ad548-4af5-11ee-97a6-92fbcf53809c.jpg

语言支持

支持C++、C、java、python、javascript五大类常用编辑语言,支持常用构建工具CMake、Maven、Ninja、Gradle等。

972a80a6-4af5-11ee-97a6-92fbcf53809c.jpg

除了上述常见功能,deepin-IDE还包含一些特有功能,例如反向调试、代码迁移等。

反向调试

该功能通过进程执行历史回放、事件分类管理、时间轴管理等手段,进一步提升应用的调试效率和开发能力。

代码迁移

代码迁移分析子系统是deepin-IDE的一大亮点,可以辅助开发者将x86平台的Linux应用迁移到龙芯、飞腾等国产处理器架构,及统信UOS等国产操作系统上,使用该功能可以自动分析出需修改的代码内容,并给出代码迁移指导,降低迁移难度,提升迁移效率。

功能界面预览

语言支持

973480d8-4af5-11ee-97a6-92fbcf53809c.png

代码迁移

97809996-4af5-11ee-97a6-92fbcf53809c.png

调试模式

97971a2c-4af5-11ee-97a6-92fbcf53809c.png

反向调试

97d9e7c6-4af5-11ee-97a6-92fbcf53809c.png

版本管理

97fc94a6-4af5-11ee-97a6-92fbcf53809c.png

谁在使用 deepin-IDE

deepin-IDE 已经在深度的部分应用上轻度使用,以下罗列了部分:

深度画板应用(deepin-draw)

仓库地址:

https://github.com/linuxdeepin/deepin-draw

深度看图应用(deepin-image-viewer)

仓库地址:

https://github.com/linuxdeepin/deepin-image-viewer

深度相册应用(deepin-album)

仓库地址:

https://github.com/linuxdeepin/deepin-album

开发画板应用

9817efa8-4af5-11ee-97a6-92fbcf53809c.png

开发画图应用

982cf1f0-4af5-11ee-97a6-92fbcf53809c.png

开发相册应用

9852768c-4af5-11ee-97a6-92fbcf53809c.png

deepin-IDE 将来会如何发展

IDE 是一个非常宏大的话题,deepin-IDE 当前相比于其他成熟的IDE才刚起步,还有很多需要完善的地方:

请一个设计师

插件系统完善

低代码编程支持

支持一键软件打包:deb、玲珑打包

支持软件包签名、上架应用商店

AI功能的接入

DTK等开发套件集成,文管、桌面、任务栏等插件模板接入

开发者平台接入

deepin-IDE 还存在一些已知问题待解决:

文件描述符占用过多导致崩溃

存在部分翻译缺失的问题

底部交互区暂不支持多页面

符号树解析精度不高

deepin-IDE 开源吗

deepin-IDE 传承了 deepin “专注自研,贡献开源” 的技术基因,自研代码14万余行。

当然,这一产品的快速发展,是站在了“开源”这个巨人的肩膀上,为了避免重复造轮子,采用了一些开源终端组件、功能组件,在此列出该产品汲取的开源成果,感谢开源社区!

986ff9e6-4af5-11ee-97a6-92fbcf53809c.jpg

代码公开地址,欢迎大家积极参与到 deepin-IDE 的研发:

仓库地址:

GitHub: https://github.com/linuxdeepin/deepin-unioncode

Gitee: https://gitee.com/deepin-community/deepin-unioncode

下载链接:

https://github.com/linuxdeepin/deepin-unioncode/releases

讲到这里,正好可以回答一下本文开头社友的问题:

969a0c88-4af5-11ee-97a6-92fbcf53809c.png

deepin-IDE和VSCode有关联吗?

我们的回答是:

没有关联!deepin-IDE 就是纯纯的自研!

deepin-IDE根植于开源社区,它依赖于 scintilla 等开源组件,本身也使用了 GPLv3 协议开源,当然也要贡献开源。和其它的基础软件一样,IDE也需要多年的打造与完善,比如 VSCode 至今也发展了八年,所以开发 IDE 确实难度巨大。 路虽远,行则将至。事虽难,做则必成。我们也欢迎开源爱好者参与进来,帮助它继续成长!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模块
    +关注

    关注

    7

    文章

    2692

    浏览量

    47422
  • IDE
    IDE
    +关注

    关注

    0

    文章

    338

    浏览量

    46727
  • 管理器
    +关注

    关注

    0

    文章

    246

    浏览量

    18502
  • 代码
    +关注

    关注

    30

    文章

    4774

    浏览量

    68503

原文标题:好多人问,必须正式介绍一下:deepin-IDE

文章出处:【微信号:linux_deepin,微信公众号:深度操作系统】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    PDG阅读器

    本帖最后由 gk320830 于 2015-3-6 01:33 编辑 我看到好多资料都是PDG格式的,但是好多人都没办法打开这种格式的文件,还看到好多人,就传
    发表于 01-16 23:11

    那位师傅介绍一下这款原件,问了好多人都不知道是什么

    `那位师傅介绍一下这款原件`
    发表于 02-27 09:19

    一下,什么叫做报文的透明转发啊

    一下,什么叫做报文的透明转发啊 一下,什么叫做报文的透明转发啊
    发表于 06-11 09:13

    毕业设计之开发板大pk

    现在好多人都在哪款板子好,哪款板子是主流,下面就让大家起来评论一下,看看板子都有什么优点,顺便我也来挑选款适合自己的,我在读大四,需要
    发表于 09-12 15:08

    labview加密解密文件

    本帖最后由 wang060102122 于 2017-9-8 14:50 编辑 论坛有位网友分布的加密和解密文件夹小程序,其中加密可以正常使用,解密有些问题,好多人都在跟帖如何解密。我把他的程序修改了
    发表于 09-08 14:45

    LABVIEW远程连接SQL SERVER,示例给大家参考

    最近有好多人连接远程数据库的方法,我这有篇文章供你参考,相信你能得到启发的,能不能找到有用的信息就看你的功力了
    发表于 04-03 21:06

    什么是接口?为什么要做接口测试

    接口其实app和前端交互用的,所以好多人,为啥做功能测试还要测接口,目标是啥不是多此举吗?首先我告诉大家,这种想法是错误的
    发表于 01-04 15:45 1w次阅读

    深度操作系统deepin 文档目录已上线 GitHub

    操作系统的些使用介绍文档。目前,深度方面已上传了些内容,包括系统基础支持、入门知识、基础模块功能使用介绍。 IT之家了解到,deepin
    的头像 发表于 01-19 18:19 2443次阅读

    Arduino IDE上面开发NodeMCU

    虽然网络上已经有好多资源了,但我还是在这里记录一下试验过程……毕竟NodeMCU面世已经5年左右了,那个年代是开源社区爆发的段时间。到现在,好多教程都比较古老了,不知读者会不会觉得不
    发表于 10-28 11:36 1次下载
    Arduino <b class='flag-5'>IDE</b>上面开发NodeMCU

    PLC、DCS、SCAD系统比较

    现在工业控制中好多人对PLC、DCS、SCADA系统的概念比较混淆,搞不清楚,今天带大家了解一下这几个系统和概念。
    的头像 发表于 12-29 17:32 4872次阅读

    deepin WSL安装教程

    看完《deepin V23成功适配WSL,我们做了什么?》,大家是不是迫不及待地想试试?接下来,我们简单演示一下deepin WSL的安装。
    的头像 发表于 07-15 11:17 1177次阅读
    <b class='flag-5'>deepin</b> WSL安装教程

    deepin适配Apple M1的过程()

    在上篇中,我们介绍deepin适配M1的方案选择以及方案介绍,让大家了解了我们在适配前的些思路。本篇中,我们主要让大家了解一下我们在适配
    的头像 发表于 07-15 11:23 1192次阅读
    <b class='flag-5'>deepin</b>适配Apple M1的过程(<b class='flag-5'>下</b>)

    什么是DAP协议?DAP如何工作?详解deepin-IDE中的调试功能

    前不久深度科技旗下 deepin 社区发布了自己的 IDEdeepin-IDE,得到了全网用户尤其是开源社区用户的广泛关注,目前在 GitHub仓库的 star 数量已经达到 600 多个,说明大家的热情还是很高涨的。
    的头像 发表于 11-10 16:46 4579次阅读
    什么是DAP协议?DAP如何工作?详解<b class='flag-5'>deepin-IDE</b>中的调试功能

    deepin-IDE旧貌换新颜:从Qt到DTK

    deepin-IDEDeepin Union Code)新版本现已推出,具体更新内容如下
    的头像 发表于 12-28 09:45 968次阅读
    <b class='flag-5'>deepin-IDE</b>旧貌换新颜:从Qt到DTK

    关于极限语言ε-δ的点理解

    好多人都是因为这个地方放弃数学的对吧?
    的头像 发表于 03-11 14:25 1463次阅读
    关于极限语言ε-δ的<b class='flag-5'>一</b>点理解