• 关于 android第三方开源 的搜索结果

回答

目前基本原因是基础版SDK的UI不开源, 所以内部是引用了support包的,但是打成AAR时是没有support包打入的,这就导致id不对应的情况。目前需要您将support版本包对应,如下: //重要如果工程中引入第三方库也引入了support包,也必须要保证第三方的包版本对应,建议以源码引入第三方库 compile 'com.android.support:appcompat-v7:24.2.1' compile 'com.android.support:design:24.2.1' 但是有时候第三方库带support包修改起来比较麻烦可能有些第三方包并不是源码引入的,这样建议在Application里面的gradle配置中。 configurations.all { resolutionStrategy { force 'com.android.support:appcompat-v7:24.2.1' force 'com.android.support:design:24.2.1' } }

保持可爱mmm 2020-03-30 13:54:00 0 浏览量 回答数 0

回答

你这个github项目作者明显是用android studio写的,gradle是证实,还引用的maven,pom.xml是证实,并且你这个github项目还是带有第三方lib的,所以普通的导入肯定是有问题的,需要修改gradle配置,具体要看你的报错信息,同时如果你想多学习github上的开源项目,建议你去下一个android studio,并学习一下gradle的知识,这样,github上的任何项目都不是问题了。gradle的学习,

爵霸 2019-12-02 02:20:34 0 浏览量 回答数 0

问题

关于Android appcompat-v7 和actionbarSherlock区别,建议使用哪个?

爵霸 2019-12-01 20:28:18 1084 浏览量 回答数 1

新用户福利专场,云服务器ECS低至102元/年

新用户专场,1核2G 102元/年起,2核4G 699.8元/年起

回答

最基本的数据库创建,增删改查总会吧?如果这个都不会,我感觉那就不是简单的不会做接口了。。。。。然后java写接口其实说白了不就是把一些参数post或者get到服务器,然后你做一些处理,然后把数据以json或者xml形式返回吗?java也是有实体类的吧,最简单的方式就是,把要返回的一些数据,例如“文章列表”数据,装入一个实体类,例如List ,然后用一些开源包,直接序列化这个 List,json都不用自己拼。到了android这边,模拟请求,例如用 httpClient类的第三方包 请求回json,然后用第三方开源解析的工具,例如 gson,直接把json反序列化,这样就能在这边直接还原到 List 这个实体类了,然后你懂的 汗。List 后面的一些字符被吃掉了。

我是花 2019-12-02 01:30:00 0 浏览量 回答数 0

问题

【开源分享】- 支付组件IJPay3期

montos 2020-04-30 15:29:11 3 浏览量 回答数 1

回答

开原协议.txt 在国内不是.exe,哈哈 ###### 1、确保软件自始至终都以开放源代码形式发布,保护开发成果不被窃取用作商业发售。任何一套软 件,只要其中使用了受 GPL 协议保护的第三方软件的源程序,并向非开发人员发布时,软件本身也就自动成为受 GPL 保护并且约束的实体。也就是说,此时它必须开放源代码。 2、GPL 大致就是一个左侧版权(Copyleft,或译为“反版权”、“版权属左”、“版权所无”、“版责”等)的体现。你可以去掉所有原作的版权 信息,只要你保持开源,并且随源代码、二进制版附上 GPL 的许可证就行,让后人可以很明确地得知此软件的授权信息。GPL 精髓就是,只要使软件在完整开源 的情况下,尽可能使使用者得到自由发挥的空间,使软件得到更快更好的发展。 3、无论软件以何种形式发布,都必须同时附上源代码。例如在 Web 上提供下载,就必须在二进制版本(如果有的话)下载的同一个页面,清楚地提供源代码下载的链接。如果以光盘形式发布,就必须同时附上源文件的光盘。 4、开发或维护遵循 GPL 协议开发的软件的公司或个人,可以对使用者收取一定的服务费用。但还是一句老话——必须无偿提供软件的完整源代码,不得将源代码与服务做捆绑或任何变相捆绑销售。 只要代码是开放的,收不收钱都是符合gpl的。 gpl具有传染性,所以phpcms应该也是gpl协议的才行。 ######突然感觉这些开源协议就像形式一样,在很多时候不用去管它。 我以前开发一些东西,如果不是自己用,都会慎重的选择开源协议的。看来我有些多虑了。######关于这个问题,我觉得你可以搜索一下Android的授权构成,话不多说,要不又有狗粉骂人了######确实比较复杂

kun坤 2020-06-02 15:55:15 0 浏览量 回答数 0

回答

开原协议.txt 在国内不是.exe,哈哈 ###### 1、确保软件自始至终都以开放源代码形式发布,保护开发成果不被窃取用作商业发售。任何一套软 件,只要其中使用了受 GPL 协议保护的第三方软件的源程序,并向非开发人员发布时,软件本身也就自动成为受 GPL 保护并且约束的实体。也就是说,此时它必须开放源代码。 2、GPL 大致就是一个左侧版权(Copyleft,或译为“反版权”、“版权属左”、“版权所无”、“版责”等)的体现。你可以去掉所有原作的版权 信息,只要你保持开源,并且随源代码、二进制版附上 GPL 的许可证就行,让后人可以很明确地得知此软件的授权信息。GPL 精髓就是,只要使软件在完整开源 的情况下,尽可能使使用者得到自由发挥的空间,使软件得到更快更好的发展。 3、无论软件以何种形式发布,都必须同时附上源代码。例如在 Web 上提供下载,就必须在二进制版本(如果有的话)下载的同一个页面,清楚地提供源代码下载的链接。如果以光盘形式发布,就必须同时附上源文件的光盘。 4、开发或维护遵循 GPL 协议开发的软件的公司或个人,可以对使用者收取一定的服务费用。但还是一句老话——必须无偿提供软件的完整源代码,不得将源代码与服务做捆绑或任何变相捆绑销售。 只要代码是开放的,收不收钱都是符合gpl的。 gpl具有传染性,所以phpcms应该也是gpl协议的才行。 ######突然感觉这些开源协议就像形式一样,在很多时候不用去管它。 我以前开发一些东西,如果不是自己用,都会慎重的选择开源协议的。看来我有些多虑了。######关于这个问题,我觉得你可以搜索一下Android的授权构成,话不多说,要不又有狗粉骂人了######确实比较复杂

一枚小鲜肉帅哥 2020-05-28 09:58:18 0 浏览量 回答数 0

回答

" 开原协议.txt 在国内不是.exe,哈哈 ###### 1、确保软件自始至终都以开放源代码形式发布,保护开发成果不被窃取用作商业发售。任何一套软 件,只要其中使用了受 GPL 协议保护的第三方软件的源程序,并向非开发人员发布时,软件本身也就自动成为受 GPL 保护并且约束的实体。也就是说,此时它必须开放源代码。 2、GPL 大致就是一个左侧版权(Copyleft,或译为“反版权”、“版权属左”、“版权所无”、“版责”等)的体现。你可以去掉所有原作的版权 信息,只要你保持开源,并且随源代码、二进制版附上 GPL 的许可证就行,让后人可以很明确地得知此软件的授权信息。GPL 精髓就是,只要使软件在完整开源 的情况下,尽可能使使用者得到自由发挥的空间,使软件得到更快更好的发展。 3、无论软件以何种形式发布,都必须同时附上源代码。例如在 Web 上提供下载,就必须在二进制版本(如果有的话)下载的同一个页面,清楚地提供源代码下载的链接。如果以光盘形式发布,就必须同时附上源文件的光盘。 4、开发或维护遵循 GPL 协议开发的软件的公司或个人,可以对使用者收取一定的服务费用。但还是一句老话——必须无偿提供软件的完整源代码,不得将源代码与服务做捆绑或任何变相捆绑销售。 只要代码是开放的,收不收钱都是符合gpl的。 gpl具有传染性,所以phpcms应该也是gpl协议的才行。 ######突然感觉这些开源协议就像形式一样,在很多时候不用去管它。 我以前开发一些东西,如果不是自己用,都会慎重的选择开源协议的。看来我有些多虑了。######关于这个问题,我觉得你可以搜索一下Android的授权构成,话不多说,要不又有狗粉骂人了######确实比较复杂"

montos 2020-06-03 22:32:24 0 浏览量 回答数 0

问题

Android网络请求的最优解决方案

蛮大人123 2019-12-01 19:59:37 1291 浏览量 回答数 1

问题

安卓与iOS百问,开发者系统指南

yq传送门 2019-12-01 20:14:48 27317 浏览量 回答数 26

问题

Nutch从搜索引擎到网络爬虫

开源 2019-12-01 21:28:43 8952 浏览量 回答数 0

问题

Nutch从搜索引擎到网络爬虫

开源 2019-12-01 21:28:43 9757 浏览量 回答数 1

回答

随着移动互联网大潮的快速发展,开源中国社区作为国内大型IT技术人员社区也推出了手机移动客户端,覆盖iOS,Android以及Windows Phone这三个手机平台。主要为了能让我们的用户能随时随地的与开源中国社区的用户进行交流与互动。我们需要App实现什么? 参考当前已经存在的IT类资讯App,阅读新闻是肯定不能少的。可是只能阅读新闻肯定也是不行的,因为我们发现程序员是一种独特的人群。程序员与程序员之间有聊不完的话题,他们更容易把自己的兴趣集中在编程与技术问题上,甚至会因为一个小小的技术问题或者IT界的话题而争论不休。 OSChina.NET本身相比于其他IT编程网站而言,社交性质更加明显,比如动弹与个人空间的动态与提到我 ,以及粉丝与关注的好友等等。所以在App的功能体系设计之初我们当然把重心偏在社交这一块。 在智能机上运行的App与OSChina.NET网站相比当然不可能什么功能都包括,对于手机上普遍不到4寸的屏幕而言,显示代码段自然就是一个非常令人头疼的问题,因为普通文章只要通过换行就能解决,但是程序代码动不动换行只会给浏览用户带来无尽的烦恼,这一点我相信各位都很有感触。所以代码分享区不会做进App里。 App几个重点实现方式: 1,这里专门说下登陆的处理,大家都知道去年CSDN的密码泄露事件吧,为了防止这种事情,OSChina.NET对所有用户登陆强行使用SSL登陆的方式来加密传输数据。所以我们的三种手机客户端都是采用https登陆的方式实现的。 2,基于Http传输的数据格式基于XML,大家可能会问为什么不用最流行的JSON来作为序列化与反序列化规范,考虑到两者实际带宽消耗相差不大,所以暂时仅仅支持XML格式http传输数据,当然不排除未来会加入JSON支持。 3,大家都知道App是可以发带图片的动弹的,对于手机应用来说这一点非常重要,因为我们都很喜欢那种拍照就发送的即时分享感觉,可是一般手机拍下来的图片都是巨大无比的,这对于上传到服务器以及让其他人浏览都很不方便,所以我们这里针对三个客户端都做了缩图处理,在图片质量与体积大小的权衡上找到最佳的平衡点。4,动态的处理,整个App中最复杂的应该算是动态列表的显示了,这里必须使用富文本控件来显示,在我开发iOS版本的时候首先使用第三方的FTRichTextView控件,可是它有很多问题,性能消耗过大不说还容易在列表控件中消失,直到后来找到新的替代品RTLabel才真正解决这个问题,相反在Windows Phone以及Android的处理上很容易就解决了富文本的显示OK,以上几点只是我们在开发过程中碰到的一小部分问题,我们会在后续的系列文章中分享整个App制作过程中碰到的一些难题与最后解决方案的心得!

杨冬芳 2019-12-02 03:00:16 0 浏览量 回答数 0

问题

Android安全开发之通用签名风险

移动安全 2019-12-01 21:14:31 4210 浏览量 回答数 1

问题

Appium是什么?

猫饭先生 2019-12-01 20:55:44 916 浏览量 回答数 0

问题

身为 Java 程序员必须掌握的 10 款开源工具!

游客pklijor6gytpx 2020-01-13 09:39:45 3667 浏览量 回答数 2

问题

广州.NET男屌求职 热:报错

kun坤 2020-06-08 11:11:12 3 浏览量 回答数 1

回答

虽然跨平台的移动APP开发有利有弊。但从业务初创的角度来看,优点应该是大于缺点的。而且,随着对跨平台移动应用需求的不断增长,现在可用的工具和框架数量也已经很可观了。 但选择过多会令人头疼,这就是为什么我们只关注最突出的跨平台移动开发框架的原因:React Native, Flutter, NativeScript, 和Xamarin。 为了让你更深入地了解是什么使这些工具成为2020年软件开发的可选选项,我们将根据以下标准对它们进行打分:社区支持、基于的编程语言、代码可重用性、性能、界面以及使用它们构建的重要应用程序。 React Native Reaction Native是Facebook于2015年发布的开源、跨平台的应用开发框架。作为2013年举办的一场内部黑客马拉松的产物,它已经成为最受欢迎的原生App开发替代方案之一,拥有2043名GitHub贡献者,获得了超过82900 GitHub标星。不断增长的社区认知度使得找到一支可靠且经验丰富的开发团队来承接你的项目变得相对容易。 Learn Once and Write Anywhere 基于React.JS,React Native利用JavaScript(根据2019年Stack Overflow的调查,JavaScript成为了最受欢迎的编程语言),为Android和iOS用户提供真正原生的应用外观和体验。另外,使该框架脱颖而出的是,如果你需要,React Native允许你使用Java、Objective-C或SWIFT编写部分原生模块来顺利处理复杂的操作,如视频播放或图像编辑。 虽然这些组件不能在不同的平台之间共享,并且需要开发人员做更多的工作,但多达90%的React Native代码是可以重用的。很好地表明该框架的座右铭不是“Write Once, Use Anywhere”,而是“learn once, write anywhere”。 就GUI而言,React Native可以提供接近原生的用户体验,这要归功于它使用了Android和iOS的本地控制器。它还使用带有UI元素的ReactJS库,这有助于加快UI设计过程。在开发移动应用程序时,使此框架值得考虑的另一个原因是,它可用在不丢失应用程序状态的情况下对UI进行更改。 另一个使React Native成为2020年跨平台移动开发框架的首选之一,是因为持续的更新,例如近期的版本 0.60 和 0.61 : 多项辅助功能改进。 更清晰、更人性化的开始屏幕。 快速刷新,融合了实时和热重新加载,从而显著加快了开发进程。 如上的Release Note只是React Native适应不断变化的需求其中一个很小的样本。 2020年值得考虑的第二个框架是Flutter。它在Google I/O 2017上宣布,并于2018年发布,对于跨平台的世界来说,它现在仍然是一个“新人”。但尽管如此,它已经获得了超过80500 GitHub星标和绝大多数工程师将其称为2019年Stack Overflow调查中最受欢迎的三个框架之一,Flutter无疑是一股不可忽视的力量。 Dart是如何使Flutter变得独一无二的 Flutter 背后的编程语言是 Dart,谷歌称之为"客户端优化",适合在任何平台上"快速构建应用程序"。它于 2011 年推出,是一种响应式面向对象的语言,被开发者认为相对容易学习,其中原因有二:第一,语法上它借鉴了C/C++ 和 Java; 第二,在官方网站上,您可以找到内容广泛且相当简单的文档。值得一提的是,Dart 附带了大量Flutter 兼容软件包的软件包,允许您使应用程序更加复杂。 lutter的一个主要优势是,它的性能比本文提到的任何其他跨平台移动开发框架都要好。这归功于Dart的编译器和Flutter拥有自己的一套小部件。结果是它能更快、更直接地与平台直接通信,而不需要JavaScript桥(例如,Reaction Native就是这种情况)。说到小部件:通过Flutter的“UI-as-a-code”方法,它们只用DART编写,这就提高了代码的可重用性。 效率与用户体验和界面密不可分。如前所述,Flutter不依赖于一组原生组件,而是利用可视化、结构化、平台性和交互式小部件进行UI的设计,所有这些都由框架的图形引擎呈现。更重要的是,Flutter留下了很大的定制空间,如果你想要设计一个很完美的UI,它是个很好的选择。 说到Flutter的更新,最新的稳定版本是在12月12日发布的,根据官方发布说明,它合并了来自188个贡献者的近2000个pull。例如,版本1.12.13中包括的改进: 重大的API变动。 新功能,例如SliverOpacity小部件和SliverAnimatedList。 修复了崩溃和性能问题。 Beta版中的Web支持。 这不是一个完整的清单,因为Flutter的目标是让每年发布的四个版本中的每一个版本都能为框架的可用性提升一个台阶。 Flutter是一个年轻的跨平台移动应用程序开发框架,所以它没有像React Native受到众多的大公司青睐也是不足为奇的。然而,这并不意味着它不好,截至2019年12月,它也为阿里巴巴、谷歌广告、Groupon等众多公司和业务所采用。 NativeScript 如果你要开始开发你的产品,“React Native”和“Flutter”绝不是唯一的解决方案。在 2020 年初,适合您的企业的替代框架也可能是 NativeScript。 这个开源框架于2015年3月公开发布,并迅速成为广受欢迎的解决方案。例如,在发布后的短短两个月内,它就获得了3000颗GitHub星标,并在Twitter上吸引了1500多名粉丝的关注。到今天为止,市场上已有超过700个插件可供选择。 在使用NativeScript构建跨平台应用程序时,开发人员首先用JavaScript及其超集TypeScript编写代码。然后,将代码库编译成各自平台原生的编程语言。 另外值得一提的是,使用 NativeScript 的开发人员也可以使用第三方库(CocoaPods 和 Android SDK),而无需包装。 与React Native类似,NativeScript允许访问Android和iOS原生API,这对跨平台应用程序有明显的积极影响。然而,不同之处在于,前者需要构建桥接API,而后者(用Progress首席开发者倡导者TJ VanToll的话说是“将所有iOS和Android API注入JavaScript虚拟机”)。与Facebook框架的另一个相似之处在于代码重用,在这两种情况下都可以达到90%。 Xamarin Xamarin开源框架创建于2011年,这使它成为了这个列表中最“古老“的框架,但直到五年前它被微软收购时,它才获得了发展势头。截至今天,它号称拥有超过6万名贡献者的社区。 从技术上讲,要用Xamarin构建跨平台的移动应用,需要很好地掌握.NET和C#两种技术,前者是使用多种语言(包括C#编程语言)、编辑器和库的开发平台。Xamarin用一组工具补充了上述平台,这些工具有助于构建跨平台应用程序,例如库、编辑器扩展和XAML。第二种技术是C#,这是一种面向对象的编程语言,它被认为比JavaScript学习起来稍难。Xamarin利用这种编程语言编写整个应用程序,从后端到原生API,再到业务逻辑。 Xamarin.Native和Xamarin.Forms Xamarin与其他框架的不同之处在于,它提供了两种编译跨平台移动应用的方式:Xamarin Native(也称为Xamarin.Android/iOS)和Xamarin.Forms。前一种方法优先考虑共享业务逻辑,并通过使用本机接口控件实现近乎本机的性能。 后者侧重于共享代码,而不是业务原理,这一方面会导致代码重用比例增加(使用Xamarin,开发人员可以重用高达96%的C#代码),但另一方面这样会降低代码性能。 您可能已经注意到,跨平台移动应用程序的性能和GUI密切相关,所以如果我说Xamarin构建应用程序的两种方法对界面的最终外观有很大影响,我可能不会感到惊讶。 Xamarin.Android/iOS允许开发人员使用原生控件和布局,而Xamarin.Forms基于标准UI元素,允许从单个API设计应用程序,但如果你需要更完美的原生UI,则可能还不够。 2020年跨平台应用程序开发还值得考虑吗? 不论如何,跨平台确实是一个值得考虑和极具前景的方向,特别是我们上面提到的 “React Native”和“Flutter”。 前者是一个成熟而稳定的框架,利用了最流行的编程语言之一,并拥有成熟的大型开发人员社区。后者是一个快速发展的技术,尽管它比React Native年轻的多,它也已经赢得了世界各地许多开发人员的青睐。 但无论您选择的是“React Native”、“Flutter”还是任何其他框架,跨平台方法都一定会为您节省时间和金钱,同时能为你最大限度地扩大市场覆盖范围。 最后,值不值得考虑,最终还是取决于你的业务目标、预算和时限。 来源;:葡萄城官网

问问小秘 2020-04-15 13:30:17 0 浏览量 回答数 0

回答

一,android串口通信 串口通信采用一个第三方开源项目,实现串口数据收发。 使用了 api和jni; 支持4串口同时收发,有定时自动发送功能,收发模式可选Txt或Hex模式; n,8,1,没得选; 为减轻界面卡顿的情况,接收区的刷新采用单独的线程进行定时刷新; 发送区的数据以及一些设置项,在程序关闭时会自动保存,打开时自动载入; jni使用最新的NDKr8b重新编译了一下 简单编写步骤: 1.新建一个项目,自己起个名字 2.直接复制serialport api和jni文件夹到新建的工程,如果不想自己编译jni,就连libs文件夹也一起复制 3.去android官方网站下载NDK,解压,在CMD中转到jni目录,并执行 绝对路径ndk-build 4.自己再封装一个工具类或直接使用SerialPort类都行,举个直接使用的例: 直接剽窃原项目的SerialPortActivity.java,并稍微改一下,重点改这里 mSerialPort = mApplication.getSerialPort(); 这里可以改成 new SerialPort(new File("/dev/s3c2410_serial0"), 9600, 0);//COM0,波特率9600 SerialPortFinder的使用就没什么好讲的了,实例化后用.getAllDevicesPath()就能获取到所有设备了。其它如数据转换等请参考源码 源码可以参考谷歌android-serialport-api例子 二,串口通信协议解析 1.通信基本格式 字段 描述 长度(字节) 起始符 0F,十六进制码 1 信息类型 一个字节,十六进制码(0F,F0,FF等保留码不用)1 信息长度 是信息内容的长度,ASCII码表示(0~9,A~F,最大长度为256)(例如长为11个,十六进制是0B,则两个字节就写0x30 0x42)。 注:因为最大长度256不能满足有些指令的要求,所以对长度做了扩展,下面是扩展说明: 如果第一个字节的最高位为1,则表示扩展长度。在扩展长度状态下,其他15个字节通过16进制大端模式来保存长度。比如:0x80 0x12表示长度为0x001 2,0x81 0x12表示长度为0x0112。2 信息内容 一组十六进制码 N 校验 一个字节,十六进制码,是自信息类型起至对象号止所有码的异或。1 结束符 F0,一个字节,十六进制码 (为了保证可靠性,车机下发的结束符为F0 FF)1 2.协议解析 /** * 读取终端设备数据 * @author Administrator */ private class ReadThread extends Thread { @Override public void run() { super.run(); // 定义一个包的最大长度 int maxLength = 2048; byte[] buffer = new byte[maxLength]; // 每次收到实际长度 int available = 0; // 当前已经收到包的总长度 int currentLength = 0; // 协议头长度4个字节(开始符1,类型1,长度2) int headerLength = 4; while (!isInterrupted()) { try { available = mInputStream.available(); if (available > 0) { // 防止超出数组最大长度导致溢出 if (available > maxLength - currentLength) { available = maxLength - currentLength; } mInputStream.read(buffer, currentLength, available); currentLength += available; } } catch (Exception e) { e.printStackTrace(); } int cursor = 0; // 如果当前收到包大于头的长度,则解析当前包 while (currentLength >= headerLength) { // 取到头部第一个字节 if (buffer[cursor] != 0x0F) { --currentLength; ++cursor; continue; } int contentLenght = parseLen(buffer, cursor, headerLength); // 如果内容包的长度大于最大内容长度或者小于等于0,则说明这个包有问题,丢弃 if (contentLenght <= 0 || contentLenght > maxLength - 5) { currentLength = 0; break; } // 如果当前获取到长度小于整个包的长度,则跳出循环等待继续接收数据 int factPackLen = contentLenght + 5; if (currentLength < contentLenght + 5) { break; } // 一个完整包即产生 // proceOnePacket(buffer,i,factPackLen); onDataReceived(buffer, cursor, factPackLen); currentLength -= factPackLen; cursor += factPackLen; } // 残留字节移到缓冲区首 if (currentLength > 0 && cursor > 0) { System.arraycopy(buffer, cursor, buffer, 0, currentLength); } } } } /** * 获取协议内容长度 * @param header * @return */ public int parseLen(byte buffer[], int index, int headerLength) { // if (buffer.length - index < headerLength) { return 0; } byte a = buffer[index + 2]; byte b = buffer[index + 3]; int rlt = 0; if (((a >> 7) & 0x1) == 0x1) { rlt = (((a & 0x7f) << 8) | b); } else { char[] tmp = new char[2]; tmp[0] = (char) a; tmp[1] = (char) b; String s = new String(tmp, 0, 2); rlt = Integer.parseInt(s, 16); } return rlt; } protected void onDataReceived(final byte[] buffer, final int index, final int packlen) { System.out.println("收到信息"); byte[] buf = new byte[packlen]; System.arraycopy(buffer, index, buf, 0, packlen); ProtocolAnalyze.getInstance(myHandler).analyze(buf); }

爵霸 2019-12-02 01:56:32 0 浏览量 回答数 0

回答

一、前言 Java语言长期以来一直霸占多数热门编程语言榜单的榜首,可见这是一个备受程序员热捧的编程语言。Java语言具有什么魅力?想必这都是已经为大多数人们所熟知的了,不值得过多赘述。而Java语言发展至今,面对发展势头迅猛又十分简单易学的python,以及各种层出不穷的高级语言,Java程序员的份额已经逐步下降,那它是否还能在未来保持领先的优势呢?本文就主要从Java语言所不擅长的领域,以及它在自己的领土内受到的对手入手,聊一聊Java语言在未来所面临的挑战。 二、Java帝国的今天 2.1 依然霸占TIOBE热门编程语言的榜首 这是来自权威开发语言排行榜TIOBE的最新数据(截止到2020年4月),可以看到Java语言依然在语言排行榜霸占第一的位置!虽然下面Python小老弟近几年搭上大数据的热潮,发展实为迅猛,在其他一些排行榜上面甚至超越大哥,但是在TIOBE这样权威的排行榜上面,Python依旧是小老弟! 2.2 曾经想扼杀Java的微软宣布加入OpenJDK 这又是一个IT界的真香现场,Sun 公司曾以“歧视使用 Java 软件”为由起诉微软。而微软在2001年推出新版操作系统 Windows XP 时,故意不安装 Java 软件,并且推出高仿 Java 的语言 C# 和 .net 框架。在现在,微软却宣布加入OpenJDK,拥抱Java技术。微软的宇宙第一 IDE Visual Studio也开始支持Java开发(通过VS的 Visual Studio Live Share ,可以关联到VS code上面的Java项目,协同编程,间接地支持了Java开发)。 2.3 Oracle发布开源全栈虚拟机GraalVM 这是大名鼎鼎的Oracle公司搞出来的开源产品,从官网“Run Programs Faster Anywhere”这句口号和产品的命名GraalVM就可以看出,GraalVM是升级版的JVM。在GraalVM上面执行Java程序的效率更高(得益于其中的JIT编译器技术)。最牛逼的地方在于,GraalVM支持多语言应用!在GraalVM里面,多种不同的语言可以互相传递数据,支持Java、Python、Ruby、R、Scala、Kotlin,JavaScript等多种语言。 三、Java帝国受到的挑战 3.1 后端服务器开发 J2EE作为Java平台的重要组成部分,现在广泛应用于Web后台服务器开发领域,在这个领域,Java拥有很多好朋友,比如Spring框架,Mybatis和Hibernate等,使得开发者可以快速构建Web应用程序。这是Java帝国一块重要的领土,但也有很多挑战。下面就是几个强大的竞争者。 3.1.1 Python 的竞争 Python语言和Java相比,具有下面这些优点: 语法简单直观,这意味着开发速度快第三方库强大,可以写复杂的逻辑 当然Python和Java相比执行效率上肯定是更低了,因此主要应用于小型的网站后台,像阿里这样的大厂就是拥抱Java后台的了。 3.1.2 C++ 的竞争 C++语言和Java相比,具有以下优点: 执行效率高对内存管理自由,而Java由GC来管理 C++适合大型高性能的服务器开发。腾讯更多的就是使用C++进行开发,这点和阿里不同。当然C++相比Java,学习和开发的难度更高。 3.1.3 node.js 的竞争 node.js的出现大概是前端程序员最高兴的事情了,因为node.js可以让他们写的JavaScript代码运行在服务端,这样就可以使得前端不用学Java也能自己写后台,摆脱后台爸爸的束缚(误)。得益于node.js的事件驱动机制,node.js具有很高的并发性能,可以应对大规模的http请求。但也有缺点,因为js只支持单核,因此没法充分利用服务器的性能,它不适合CPU密集型应用。 3.1.4 Go 的竞争 Go语言是最近很火的开发语言,适合用于开发高性能分布式系统。这是一个十分强大的竞争对手,被认为是未来的服务端语言。它具有下面这些优点: 学习难度低,容易上手,易于维护得益于协程,并发性能优越编译型语言,执行效率高 3.1.5 小结 可以看到,在后端服务器开发领域,Java在不同方面受到多种语言的竞争,轻量小型的服务器,人们可以选择Python,node.js或者PHP。而大型高性能服务器,人们可以选择C++。Go语言就更强大,兼具了比Java更简单的语法和更高的并发性能,背后又是Google爸爸。因此,在这一领域,Java面临巨大的竞争压力。 3.2 安卓系统应用开发 Java用于安卓应用程序开发已经是很成熟的方案了,目前绝大多数的安卓应用都是用Java写的。很多安卓程序员也都是学Java过来的。但是随着新语言不断推出,和安卓应用开发方式的演变,Java慢慢不再是安卓开发的首选。比如下面这些语言,就是比较热门的选择。 3.2.1 Kotlin 成为 Android 开发的首选语言 在2019年的Google I/O 大会上,Google 官方正式宣布,Kotlin 编程语言现在是 Android 应用程序开发人员的首选语言。Java 占据 Android 开发绝对统治的时代一去不复返了。Kotlin 可以编译成Java字节码,可以在JVM上面运行,也可以编译成JavaScript,在没有JVM的机器上运行。Kotlin语言比Java更安全,更简洁,随着谷歌爸爸推崇,将来的发展前景可期。 3.2.2 Flutter 框架和 Dart 语言 这两个都是谷歌最近推出的东西,Flutter是一款用于帮助开发者在iOS和Android两个平台构建高质量原生应用的全新移动UI框架,Dart是由Google开发的一门全新的计算机编程语言,而Flutter使用Dart语言开发。Fuchsia是谷歌开发的一款全新的操作系统,Flutter 是 Fuchsia 的开发框架。Flutter编写的代码可以同时生成IOS和Android两个平台下的应用程序,因此Flutter框架逐渐热门。 3.2.3 大前端时代下的H5应用 随着时代发展,现在的前端不再只是写web网页,而是逐渐发展为大前端,web,Android,IOS通吃,H5应用的流行就是一个例子,大家应该都发现,手机上开始出现快应用,小程序这些使用前端语言进行开发的app,这些应用使用HTML,JS和CSS进行开发,无需使用Java。相比之下,H5应用轻量级,启动快,跨平台,用户体验方面也逐渐开始接近原生应用的流畅度。因此大有流行的趋势。 3.2.4 小结 这一小节介绍了安卓开发的现状,Java作为曾经的安卓开发第一首选语言,正在面临诸如Kotlin语言,Flutter和Dart语言等新的开发语言的挑战,同时,随着安卓应用开发逐渐出现H5应用的趋势,前端语言也逐渐开始来到Java的地盘。 四、Java不擅长的领域 4.1 前后端分离和JSP的没落 JSP是一度火爆的技术,Java曾对其寄予厚望,希望通过JSP技术占领web应用程序领域。然而,随着网页开发越来越复杂,用JSP开发网页变得很麻烦,前端和后端混杂在一起,开发效率很低。因此前后端开始分离,而JSP这种运行于服务器端的网页程序也就慢慢退出了舞台。 4.2 C#和.NET抢占桌面程序地盘 Java曾经也被广泛用于开发桌面客户端,其中Swing框架就是一个有名的GUI框架。然而,曾经想要扼杀Java的微软,开发了C#语言。C#成为Java的竞争对手,C#编写运行于Windows系统的桌面应用程序上具有优势,Java写的桌面应用,虽然可以跨平台到处运行,这对于程序员当然是好事,但是对于用户来说,在Windows上运行个Java程序还得安装JRE,显得十分麻烦。而且,Java桌面程序运行起来比C#程序慢。因此,C#和.NET逐渐占领了桌面应用程序的市场。 4.3 C/C++活跃的嵌入式系统领域 Java曾经是为了嵌入式系统开发而设计的。然而,Java程序员并不能直接操作硬件,并且,Java是相对较重的语言,对内存等硬件资源不友好,执行效率也相对较低。而在嵌入式系统中,往往只有很少的内存空间,却对运行效率有很高的要求。因此,在嵌入式领域,更多的是C语言和C++甚至是汇编语言的天下。 4.4 小结 这一小节主要针对Java所不擅长的领域来讨论。可以看到,Java最为有名的特性“Write once, run anywhere”,也成了它最大的缺陷:在执行效率上做不到卓越。因此,在桌面应用程序和嵌入式系统两个领域Java不是王者。而随着时代发展,前后端分离,JSP也被时代所抛弃。 五、总结 综上所述,相信大家对于Java语言有了更全面的了解,看到了Java背后的芸芸众生,各种层出不穷的高级语言和新技术,和Java相爱相杀。Java作为现在世界上最热门的编程语言,依然在各个不同的领域具有重要的地位 ,Java的强大之处在于,它十分全能,几乎没有什么是Java不能做的,但它并不都是做得最好的,我们也可以看到许许多多的竞争者在不同方面比Java语言更加优越。 但是,我写这篇文章的目的,不在于比较各个语言的优劣,各种语言都有自己的优点和缺点,我们也不必因为某种语言更好就着急转语言。总而言之,语言只是工具,各种语言之间,语法的差别都不是特别大,背后的原理也是大同小异,往往只是多了几个新特性,而语言背后的编程思维才是最重要的。

剑曼红尘 2020-04-09 14:29:42 0 浏览量 回答数 0

问题

如何定位Android NDK开发中遇到的错误?报错

爱吃鱼的程序员 2020-06-14 18:55:10 0 浏览量 回答数 1

回答

回 2楼(阿king) 的帖子 文档这块我们正在尝试改进。如果在查看文档时有任何的疑问,非常欢迎在文档中心填写意见反馈,或者直接在工单中指出问题,我们会及时对文档中的问题进行修正。希望有大家的帮助,让OSS更加方便简单。 ------------------------- Re:ReOSS大学堂OSS产品技术互动第一期OSS的介绍及控制台操作(3.23-3.27) 引用第6楼真的小白于2015-03-23 11:12发表的 ReOSS大学堂OSS产品技术互动第一期OSS的介绍及控制台操作(3.23-3.27) : 我一直没搞懂那个 跨域资源共享  貌似在控制台叫cros设置   这个功能是干嘛的啊 ? 跨域资源共享(Cors)是Html5协议解决ajax跨域资源调用问题的功能。如您的程序为Web站点或基于Html5开发的APP应用可以通过跨域资源共享解决这个问题,其他使用场景用不到这个功能。   由于ajax等的同源策略 ,会禁止获取其他域名的资源。 比如,这样的操作是被禁止的。 xhr.open("GET", "http://www.taobao.com/pic.jpg", true);   以前要实现跨域访问,可以通过JSONP、Flash或者服务器中转的方式来实现,但是现在我们有了CORS。 现在大部分浏览器都可通过名为Cross-Origin Resource Sharing(CORS)的协议支持ajax跨域调用。 ------------------------- Re:ReOSS大学堂OSS产品技术互动第一期OSS的介绍及控制台操作(3.23-3.27) 引用第5楼宝宝助手于2015-03-23 11:11发表的 ReOSS大学堂OSS产品技术互动第一期OSS的介绍及控制台操作(3.23-3.27) : 我最近上传的时候都返回地址了。但是用地址访问内容时却是 0KB 没有上传成功? 用的php SDKV2          pubObject 的时候偶尔就会这样! 到底怎么回事!!我都想转到七牛去了。前几天七牛的人才来拿服务比较 人家还上传下载双向CDN    如果上传后返回了200,表示这次上传是成功的。并且可以在上传时带入数据的MD5值,服务器端会帮用户做校验,防止网络传输中出现数据丢失。 有其他的可能的类似问题,可以提交工单,客服同学会帮你仔细排查问题。 同时,建议使用php sdk v1版本。v2版本已不再维护增加新功能。 如果使用OSS中任何困扰,欢迎使用工单,论坛等方式告知我们,我们需要你的声音。 ------------------------- Re:ReOSS大学堂OSS产品技术互动第一期OSS的介绍及控制台操作(3.23-3.27) 引用第14楼我是菜鸟2于2015-03-23 12:32发表的 ReOSS大学堂OSS产品技术互动第一期OSS的介绍及控制台操作(3.23-3.27) : oss-example.oss-cn-hangzhou.aliyuncs.com/oss-api.pdf?OSSAccessKeyId=xxx&Expires=xxx&Signature=xxx 问题1  【Signature代表什么 】 问题2 【如何向这个地址(oss-example.oss-cn-hangzhou.aliyuncs.com/oss-api.pdf?OSSAccessKeyId=xxx&Expires=xxx&Signature=xxx)上传文件】 ....... 这段url表示使用url签名的方式来直接访问OSS资源,主要针对 【客户端/服务器端】 这样的用户场景: Access key 存储在服务器端,客户端想访问一个OSS资源没有权限,需要先向服务器端发送操作信息(包括操作哪个资源,完成什么操作等)。服务器端根据信息与Access key生成Signature(签名信息),并以一个url的形式传给客户端。客户端使用该url完成之前约定的操作。 问题1  【Signature代表什么 】 签名(Signature)信息是用户的服务器端生成的身份签名,用户的客户端使用该签名来完成操作。OSS根据这个签名来判断操作是否合法。 问题2 【如何向这个地址(oss-example.oss-cn-hangzhou.aliyuncs.com/oss-api.pdf?OSSAccessKeyId=xxx&Expires=xxx&Signature=xxx)上传文件】 该url只能完成特定的操作,比如控制台上生成的签名url是用于用户发送get请求,获取object。用户如果要生成put操作的签名url,可以参考JAVA SDK中的实现: 点击这里 。 对于想参考实现签名算法,这里给一些建议: 1. OSS api 接口基于标准的http协议规范,签名是通过对请求的方法,资源位置,请求头等以AccessKeySecret为秘钥按照统一方法加密生成的。具体方法可以参考API文档: 点击这里 2. 论坛中提供了一个可视化签名demo,希望能对你有所帮助: 点击这里 3. 各个SDK版本都已开源的,可以尝试参考一下。后续也会推出更多语言的SDK。 4. 如果对签名还有疑惑与困难,告知我们,后续会考虑推出更多帮助文档以及demo来帮助用户 ------------------------- Re:ReOSS大学堂OSS产品技术互动第一期OSS的介绍及控制台操作(3.23-3.27) 引用第19楼老陈小安于2015-03-24 13:19发表的 ReOSS大学堂OSS产品技术互动第一期OSS的介绍及控制台操作(3.23-3.27) : 我想问几个问题: 1、OSS选定存储区域后,在这个区域里有什么数据可靠性措施?比如一般的存3份? 2、OSS选定存储区域后,可以跨区域存储吗?比如我觉得只存在杭州一个区域不安全,我希望在北京存储区域再放一份,可以实现吗? 3、OSS能提版本控制功能吗?一个文件,我在下载到本地修改后,再上传,能提供上一次的版本控制吗? 4、OSS只有官方推荐第三方管理软件,有没有官方自己的管理软件? ....... 【问题】 OSS选定存储区域后,可以跨区域存储吗?比如我觉得只存在杭州一个区域不安全,我希望在北京存储区域再放一份,可以实现吗? 暂时不支持此功能,因为OSS底层已经实现了3分数据备份,所以您大可以放心您的数据安全。且如果您的数据很多,多存一份也会增加您的存储成本。 【问题】 OSS能提版本控制功能吗?一个文件,我在下载到本地修改后,再上传,能提供上一次的版本控制吗? 不支持版本控制 上传相同名的object在OSS端是覆盖原有信息。 OSS只有官方推荐第三方管理软件,有没有官方自己的管理软件? 官方推出过命令行工具,OSSCMD。 官方推荐的客户端工具是经过我们安全部门认证审核的,保证安全性与质量。 同时我们会推动我们的合作伙伴服务商推出更多工具。 【问题】 OSS的API与其他厂商的兼容吗?比如和X牛? 不支持 【问题】 OSS后续有什么新功能设计?比如音视频转码? 新功能的上线尽请期待我们的官网公告。 音视频转码服务主要通过阿里云其他云产品支持,比如可以使用MTS做视频转码。 【问题】 OSS存储计费,是用阶梯方式计费吗?还是按传统的,我用了600G,就按600G范围的单价计算?,如果是按阶梯计费方式,这有什么优势呢? 存储和流量都是按照阶梯计费的。采用的是类似计税使用的超额累进的方式,将你使用的资源量切分成不同段,按不同价格计费。 比如600T的存储费用=(50-0)*价格1+(500-50)*价格2+(600-500)*价格3 采用这样的方式,对用户来说使用资源量越大,价格会越便宜。 【问题】 最后,能说说OSS的定位是什么?面向服务商的,还是面向最终客户的? OSS的最终面向用户是开发者用户,为有存储需求的用户提供海量,安全,高可靠,支持高并发的企业级云存储服务。 ------------------------- Re:ReOSS大学堂OSS产品技术互动第一期OSS的介绍及控制台操作(3.23-3.27) 引用第29楼fds-em于2015-03-25 20:45发表的 ReOSS大学堂OSS产品技术互动第一期OSS的介绍及控制台操作(3.23-3.27) : 域名绑定。CNAME跟我网站的A记录冲突怎么解决啊?而且子域名先认证文件然后把A记录删除后。然后再用CNAME。那么访问也是没用啊 参考下这个教程 http://docs.aliyun.com/#/oss/getting-started/bucket-attributes&cname 注意核对您的区域(您的Bucket所在区域不同cname地址也不同) ------------------------- Re:ReOSS大学堂OSS产品技术互动第一期OSS的介绍及控制台操作(3.23-3.27) 引用第38楼金龟于2015-03-26 13:01发表的 ReOSS大学堂OSS产品技术互动第一期OSS的介绍及控制台操作(3.23-3.27) : 为什么没有 批量转移目录,全选等功能 您可以使用这个客户端工具解决您的需求 http://bbs.aliyun.com/read/231195.html   ------------------------- 回 18楼(渴望更高) 的帖子 您可以使用移动端的SDK,直接通过手机上传图片到OSS, SDK文档: android-sdk http://docs.aliyun.com/#/oss/sdk/android-sdk ios-sdk http://docs.aliyun.com/#/oss/sdk/ios-sdk ------------------------- 回 17楼(寂寞先生) 的帖子 您可以参考下这个帖子 http://bbs.aliyun.com/read/233791.html

ossbaymax 2019-12-02 01:54:17 0 浏览量 回答数 0

问题

【Java学习全家桶】1460道Java热门问题,阿里百位技术专家答疑解惑

管理贝贝 2019-12-01 20:07:15 27612 浏览量 回答数 19
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 SSL证书 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 2020中国云原生 阿里云云栖号