技术标签: 行业热点 区块链 java 编程语言 人工智能 ios
【CSDN 编者按】很多软件都有免费版跟商业版,对于很多开发者来说,找免费软件是常有的事情,但对企业来说,到底该如何选择呢?
作者 | 陈超 责编 | Geek胖丁
头图 | CSDN 下载自东方 IC
出品 | CSDN(ID:CSDNnews)
有小朋友问(此处不应该是李永乐老师的小朋友):公司在大量使用 Qt 作为基础开发框架,公司也比较懵,使用 Qt 开发商业软件,到底是否需要付费?
作为一个十几年 Qt 使用经验的老 C++程序员,今天就来回答这个问题。
基于 LGPL 协议的 Qt
Qt 能获得如此的成功,得益于 LGPL 协议,都知道 GPL 是非常严格,不能开发闭源商业软件的。但 LGPL 允许你使用动态链接的方式开发闭源商业软件。
而 Qt 正是因为 LGPL,获得了巨大的成功。我们要定义软件基础框架的成功,需要从几个纬度:
开发者人数、社群;
软件代码的质量,稳定性;
成功的商业软件的案例。
无论从哪个维度,Qt 无疑都是非常成功的。目前 Qt 拥有百万级的开发者,经过不断的迭代,软件质量稳定性都非常优秀,同时也不乏重量级的行业基础软件,比如 Maya, SubstancePainter, 视频剪辑软件达芬奇等,都基于 Qt 开发。这些生产力基础软件,终端用户都是千万级的,从这个角度来看,Qt 的稳定性也经过了大量的终端用户的测试,验证。
Qt 的商业发展之路
从 Nokia 时代的 Meego , QML,Qt 的理念,即使是 09 年的时候,都非常先进,尤其是 QML。但被 Nokia 放弃,也成为了那个时代程序员对 Qt 的心理阴影。
Qt 作为行业基础软件,应该像 Linux 一样,被我们国家当作重要的国家战略来发展,Qt 在俄罗斯,德国等国家,都是大力使用的。
后来 Qt 被 DIGIA 收购,经过十年的发展,不但没有衰落,而且一通商业操作,越来越成功。
截止 2020 年底,Qt 公司是 DIGIA 旗下独立的子公司,而且是赫尔辛基上市公司,名字叫 QTCOM.HE。2019 年收入 5800 万欧元。市值是 12 亿欧元。
最近几年,Qt 公司一顿操作,靠卖付费 license,活得还不错,公司员工数是340人。
使用 Qt 到底需不需要付费?
初期使用 Qt 的开发者,对于各种协议的升级,容易被搞得晕头转向。GPL GPLv2 GPLv3 LGPL2.1 LGPL3 commercial license。昨天晚上研究到很晚,搞清楚了他们的这些操作,直接给您结论:
如果公司用 Qt 开发闭源商业桌面软件,在 Windows/Mac/Linux上,可以使用动态库链接方式,遵循 LGPL 协议,是不用付费的,也不用开源你的代码。
只需在你的商业软件的 about 等一些小角落,说明你使用了 Qt,遵循 LGPLV3 协议即可,你公司就可以开发闭源的商业软件。
那商业付费什么意思呢?就是指的你使用静态库链接的方式,是要付费的。
首先,嵌入式 Linux 开发,如果你自己手动编译 Qt 动态库,链接动态库。并说明你遵循 LGPL, 也是可以开发闭源商业软件的。
移动端,iOS/Android 开发。虽然 iOS/Android。目前都支持动态链接方式。但很明显,Qt 公司就是想让你付费。
最明显的就是 iOS 库,Qt 公司只提供了静态链接方式。如果你要开发 iOS,你得自己去编译动态链接库,Q t公司也没告诉你如何编译动态库.
PS:付费价格是 一年 3950 刀,三年 8400 刀。
如果你用 Qt LGPL 的方式,采用了静态库链接的方式,开发了 iOS/Android 应用。是不是就不允许,或者等着被抓呢?肯定不是的。
Qt 公司每天有很多非常重要的事情要去做。而且他们也不可能有能力扫描整个AppStore GooglePlay 看谁在违规使用他们的 Qt。
你只要不成天跑到各种论坛,社区去举报自己说自己使用了 LGPL 并使用了static lib。就没人管你。
最搞笑的事情是:你跑到开源社区去问 Qt 官方,为啥不直接提供iOS/Android LGPL 协议的动态库?他们表示,永远不会回答你。
你去问苹果,AppStore 接受 LGPLV3 的软件吗?苹果也不知道。
Qt 公司就是想办法让你付费。苹果他们不管你这些,你自己的事。
作为一个公司,团队,你一直使用 Qt 开发软件,如果你自己都没赚钱,怎么能给 Qt 公司付费呢?
所以建议是,先自己使用,等软件赚钱后,再买三年5万块左右的商业版。
如果你拿 Qt 开发商业软件,一年赚几百万,几千万,尤其是使用了手机,嵌入式版的 Qt,还是建议使用付费版,三年五万块人民币左右,支持下 Qt,开源软件的发展,有你的支持,会变得更好,自己公司也用得安心。
如果公司是 Maya, Adobe,达芬奇这种体量,那直接来深度合作定制开发了。
总结
最后,再来总结一下 Qt 的优劣势:
优势 :
Qt5 深度结合 OpenGL/ES ,非常适合做数字图像处理,生产力软件,设计软件,工具软件。跨平台图像处理能力非常强悍。
Qt6 提供跨平台的(Metal/Vulkan/D3D11)抽象层 QRhi, 对下一个10年从事音视频,数字图像处理的软件,非常大的利好。
QML 提供更简单的基于3D渲染引擎高效的写跨平台GUI的方式。但使用QML,不建议使用 JS。
(对于从事音视频,数字图像处理开发的程序员欢迎关注,后面我们会花大量的时间来深度研究 QRhi 的实现, 写一个专栏。Qt 的核心渲染层 QRhi 是他们从头写的,不是基于 MoltenVK)。
劣势:
跨平台不是特别完善,有时候还需要结合native开发,比如手机端。
作者简介:陈超,CTO 10年+ C/C++ 开发者。先后就职于德国 BOSCH,iBabyLabs 等企业担任主程, 精通嵌入式 Linux、iOS、Android 底层开发,音视频、网络通讯协议/流媒体开发,精通 Qt、FFmpeg、Metal、OpenGL 等开发库。
程序员如何避免陷入“内卷”、选择什么技术最有前景,中国开发者现状与技术趋势究竟是什么样?快来参与「2020 中国开发者大调查」,更有丰富奖品送不停!
戳:https://www.fastcompany.com/90590042/turing-test-obsolete-ai-benchmark-amazon-alexa
文章浏览阅读544次。最近想学习下自己搭建编译安卓源码的服务器。安装了ubuntu 14.04 64位桌面版操作系统。我下载的是 jdk1.7.0_71版本的。下面安装参考:http://www.cnblogs.com/fangbo/p/3941816.html1、下载最新的jdk安装,地址:http://www.oracle.com/technetwork/java/javase/download_ubuntu20.4编译android8.1
文章浏览阅读326次。https://www.codewars.com/kata/541c8630095125aba6000c00/haskell题目本题你需要写一个Digital Root函数。 Digital root是一个数字所有位的递归和。给定n,算出n各位的和n′n',继续这个操作直到n(p)=n(p−1)n^{(p)}=n^{(p-1)}。以下是范例:digital_root(16)=> 1 + 6=>_codewars who likes it?
文章浏览阅读964次。实现以下需求: 1、baidu公司提供www.baidu.com网站服务,页面显示内容“It’s www.baidu.com”,网站根目录在/www/html目录,网站通过www2.baidu.com也可以正常访问; 2、baidu公司同时提供邮件服务,邮件服务器地址为mail.baidu.com; 3、baidu公司有三个用户,xixi,maomao和haha可以和qq公司的邮件互相收发。...
文章浏览阅读7.3k次,点赞9次,收藏27次。Java GUI编程的几种常用布局管理器 本人是一个大二的学生。因为最近有做JavaGUI界面的需求,因此重新开始熟悉JavaGUI的各种控件和布局。然后以次博文为笔记,总结、完善以及发表最近学习的一些技术要点。希望各位支持和指正。目录Java GUI编程的几种常用布局管理器目录一BorderLayout默认布局管理器二FlowLayout布局管理器三GridLayout布局管理器四G_java为gui提供了哪些布局管理器?
文章浏览阅读1w次。什么是动态定时任务: 是由客户制定生成的,服务端只知道该去执行什么任务,但任务的定时是不确定的(是由客户制定)。这样总不能修改配置文件每定制个定时任务就增加一个trigger吧,即便允许客户修改配置文件,但总需要重新启动web服务啊,研究了下Quartz在Spring中的动态定时,发现: cronExpression是关键,如果可以动态设置cronExpression的值,也就说如果我们可以直_spring quartz 动态配置
文章浏览阅读87次。中南大学考试试卷—2014学年第 1 学期期末考试试题 时间95分钟计算机与程序设计语言基础 课程40学时 2.5学分 考试形式:闭卷专业年级:计算机科学与技术2013级 总分 100分,占总评成绩70 %注:此页不作答题纸,请将答案写在答题纸上判断对错(101分。对的划“√”,错的划“×”)1.表达式1/4+2.75的值是3。( )函数无返回值,它形参。( )在Turbo C中,实型数据在内..._中南大学c++期末考试
文章浏览阅读5.8k次。问题:当引入jQuery.js资源文件时,一直报资源文件未找到的问题,在排除路径错误后,再次去target目录下查看,发现target目录下根本没有我所引入的文件。解决方法:1.手动复制文件及目录到target对应目录下,一开始我是这么做的---不建议,更不是长久之计2.推荐,重构项目,会把所有资源文件映射到target目录下..._idea不会自动复制web文件
文章浏览阅读1.8w次,点赞2次,收藏14次。802.1Q帧格式802.1QTag的长度是4bytes,它位于以太网帧中源MAC地址和长度/类型之间。802.1QTag包含4个字段。Type:长度为2bytes,表示帧类型,802.1Qtag帧中type字段取固定值0x8100,如果不支持802.1Q的设备收到802.1Q帧,则将其丢弃。PRI:priority字段,长度为3bit,表示以太网帧的优先级,取值范围是0~7,数值越大_画出 802.1q 协议的帧格式
文章浏览阅读2.7k次。CQRS 是一个读写分离的架构思想,全称是:Command Query Responsibility Segregation,即命令查询职责分离,表示在架构层面,将一个系统分为写入(命令)和查询两部分。一个命令表示一种意图,表示命令系统做什么修改,命令的执行结果通常不需要返回;一个查询表示向系统查询数据并返回。读写两边可以用不同的架构实现,方便实现 CQ 两端的分别优化。CQRS 架构里通常读..._cqrs 架构
文章浏览阅读1.2w次,点赞2次,收藏4次。Haier W1048 海尔青春小蓝由于Bios设置错误。UEFI设置为第一启动项后,电脑出现 EFI shell version 2.50 如图。无法进入BIOS也无法操作,到处看帖一遍一遍的尝试终于解决了。方法见文末亲测方法有效。建议回到BIOS恢复最优的BIOS原始设置。进入方法我的机器WIN10系统。长按Shift键,然后开始菜单那里电源重启。请选择疑难解答-高级选项-UEFI固件设置-重..._efi shell version
文章浏览阅读7.1k次。《PHP等级水平评定标准》,又看到了前进的方向。分享下,这样和我曾经一样迷茫的phper不用迷茫了。 0级:(没有计算机编程基础,在培训学校里培训了三个月会php或者以前搭建过网站,又有很长一段时间没写过代码的社会人员)。特点:懂一大堆东西都说学过,实际测试的时候,机试写程序上反应半天,笔试的时候,题目鲜有答对。 入门级: 可以完整的搭建自己的网站和进行域名_php 质量级别
文章浏览阅读6.6k次,点赞7次,收藏77次。使用matlab对图像进行简单处理并分析不同处理方法的特点对不同曝光程度的图像进行均衡化处理数据代码段%直方图均衡化figure;srcimage=imread('C:\Users\27019\Desktop\机器视觉\图1-2.jpg');info=imfinfo('C:\Users\27019\Desktop\机器视觉\图1-2.jpg');subplot(2,3,1);ims..._matlab机器视觉算子有多少