首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

曾经是“杀手级”桌面语言,Java桌面开发为何走向衰落?

Java 构建应用程序只是一堆.class 文件集合;哪怕再“高阶”一点,生成.jar 文件也只能在安装了 Java 计算机上运行。...记得自己问过一位教授关于 Java 能不能生成本机可执行文件回答是“为什么非得这样?生成本机可执行文件Java 跨平台优势不就没了吗?”...如果真的想把应用程序部署成桌面程序,建议研究研究 Java WebStart。这样不用本机程序包,Mac 和 Windows 用户也能顺利安装应用程序。...开发者必须自行创建窗口和菜单,除非直接套用框架——但我从没见过能纯原生 Mac 应用程序体验 Java 框架。 但苹果总有办法,他们更进一步、 Coca 提供Java 绑定包。...记得当时史蒂夫·乔布斯还有句名言,“Java 如同开发者镣铐”。说得一点儿没错。 如果大家也想试试用 Java 编写 Cocoa 应用程序,请关注 Rococoa 项目。

1.6K20

CAPTAIN HOOK - 如何(不)寻找 JAVA 应用程序漏洞

目标 0 - 选择一个典型目标 为了创建一个工具来帮助审计人员发现大型闭源 Java 应用程序漏洞,其中很大一部分是识别典型“大型闭源 Java 应用程序”并尝试使用工具重新发现公共漏洞。...很酷是,知道 JVM 中发生一切。坏事是,你猜对了,它在 echo 程序上运行良好,但是,当需要在真实目标上测试它时,它完全无法使用。...这略微增加了设置复杂性,但大多数主流 Java 应用程序提供了一个配置文件,可以在其中指定额外 JVM 启动选项。...为了重新实现方法,使用 ByteBuddy 创建了一个简单代理,并通过Maven插件将 ByteBuddy 依赖项捆绑在代理 JAR 文件中。...这个插件是经典 JAR 文件而不是代理制作,所以我必须在构建之后手动修改以添加代理运行所需条目。然后,在目标机器上手动安装了代理,并将其加载到 JVM 中。

75510
您找到你想要的搜索结果了吗?
是的
没有找到

谈谈 Spring IOC

应用程序原本是老大,要获取什么资源都是主动出击,但是在IoC/DI思想中,应用程序就变成被动了,被动等待IoC容器来创建并注入它所需资源了。...那么IoC是如何做呢?有点像通过婚介找女朋友,在和女朋友之间引入了一个第三者:婚姻介绍所。...婚介管理了很多男男女女资料,可以向婚介提出一个列表,告诉它想找个什么样朋友,比如长得像李嘉欣,身材像林熙雷,唱歌像周杰伦,速度像卡洛斯,技术像齐达内之类,然后婚介就会按照我们要求,提供一个...对于某个具体对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转。 5、DI(依赖注入) IoC一个重点是在系统运行中,动态向某个对象提供所需其他对象。...6、对 IoC 和 DI 理解 在平时java应用开发中,我们要实现某一个功能或者说是完成某个业务逻辑时至少需要两个或以上对象来协作完成,在没有使用Spring时候,每个对象在需要使用合作对象时

47520

依赖注入和控制反转理解,写太好了

应用程序原本是老大,要获取什么资源都是主动出击,但是在IoC/DI思想中,应用程序就变成被动了,被动等待IoC容器来创建并注入它所需资源了。...那么IoC是如何做呢?有点像通过婚介找女朋友,在和女朋友之间引入了一个第三者:婚姻介绍所。...婚介管理了很多男男女女资料,可以向婚介提出一个列表,告诉它想找个什么样朋友,比如长得像李嘉欣,身材像林熙雷,唱歌像周杰伦,速度像卡洛斯,技术像齐达内之类,然后婚介就会按照我们要求,提供一个...2.2、DI(依赖注入) IoC一个重点是在系统运行中,动态向某个对象提供所需其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现。...三、对IoC(控制反转)和DI(依赖注入)理解 在平时java应用开发中,我们要实现某一个功能或者说是完成某个业务逻辑时至少需要两个或以上对象来协作完成,在没有使用Spring时候,每个对象在需要使用合作对象时

57920

依赖注入和控制反转

应用程序原本是老大,要获取什么资源都是主动出击,但是在IoC/DI思想中,应用程序就变成被动了,被动等待IoC容器来创建并注入它所需资源了。...那么IoC是如何做呢?有点像通过婚介找女朋友,在和女朋友之间引入了一个第三者:婚姻介绍所。...婚介管理了很多男男女女资料,可以向婚介提出一个列表,告诉它想找个什么样朋友,比如长得像李嘉欣,身材像林熙雷,唱歌像周杰伦,速度像卡洛斯,技术像齐达内之类,然后婚介就会按照我们要求,提供一个...2.2、DI(依赖注入) IoC一个重点是在系统运行中,动态向某个对象提供所需其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现。...三、对IoC(控制反转)和DI(依赖注入)理解   在平时java应用开发中,我们要实现某一个功能或者说是完成某个业务逻辑时至少需要两个或以上对象来协作完成,在没有使用Spring时候,每个对象在需要使用合作对象时

83830

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day21】—— Linux命令

但是,如果在准备工作进行过程中,遇到阻塞或者其他问题导致无法成功,那么应用程序可以选择忽略该终止信号。   ...采访侨总时表示只知道kill -9这命令,竖起大拇指微微一笑,转身把录音发给项目经理,深藏功与名~   所以,相比于kill命令,kill -9在执行时,应用程序是没有时间进行准备工作,立即杀掉程序...简单说,screen 提供了 ANSI/VT100 终端模拟器,使它能够在一个真实终端下运行多个全屏伪终端,每个伪终端我们称之为一个session。   ...相当于我们可以用xshell打开多个连接(session),不用时可以将这些连接置离线状态 - Detached,离线状态下session中程序会正常运行,也就是后台运行,并随时可以恢复继续使用,恢复使用...对了,如果朋友也在准备面试,请将这个系列扔给他,如果认真对待,肯定会感谢你!!好了,今天就到这里,学废了同学,记得在评论区留言:打卡。,给同学们以激励。

1K20

Java开发者PaaS指南

Java应用程序是部署到本地运行Apache Tomcat实例标准Java EE.WAR文件。...另一种选择是找到一个“数据库即服务(DaaS)”提供商,由它来创建运行MySQL服务器。...但遇到其他错误提示时,不得不承认实在没有办法解决它。PaaS一个大问题就在于,一旦出错,管理者就会陷入困境,因为无法访问到底层基础设施。...一些web应用程序服务器也会为应用程序热部署(hot swapping) 提供支持,但原理都一样。 尽管这个方法是可行,但在这个过程中,用户就会有一段时间无法使用服务。...设置完配置后,在实际启动应用程序之前,使用“cf scale”命令还可以设置所需实例和RAM数量。

2.1K40

HTML5崛起之时,Java桌面时代就已经终结了

桌面王朝最后时光 2002 年左右,在客服中心客户提供计算机与打印机技术支持。和小伙伴们挤在小小隔间里,面对着一款桌面程序。...如果你是铁杆“保皇党”(比如说),那就继续坚守 Java 桌面开发,同时满腹狐疑地看着自己这个圈子越来越小。...到这时,唯一遗憾就是 Java 应用程序无法在网络浏览器中运行(只有小程序可以)。 为了解决这个难题,Google 打造出 GWT(Google Web Toolkit)。...遇到问题时,习惯是上 Google 搜一搜,看看有没有其他人遇到或者已经解决过相同问题。但在 Swing 开发上,发现最新搜索结果也基本是 2005 年左右内容了,之后基本再无新增。...经过此番变革,“桌面”范畴变得更小,以往很多被视为“桌面应用程序软件现在被划入“客户端应用程序”类别。具体来讲,如果应用程序只负责在用户与服务器交互时提供 UI,那它就属于客户端应用程序

76930

Docker 镜像优化:从 1.16GB 到 22.4MB

容器是在独立环境中运行进程,它运行在自己文件系统上,该文件系统是使用 docker 镜像构建。镜像中包含运行应用程序所需一切(编译后代码、依赖项、库等等)。...镜像使用 Dockerfile 文件定义。 术语 dockerization 或 containerization 通常用于定义创建 Docker 容器过程。...让我们从一个示例开始,在该示例中,我们构建了一个 React 应用程序并将其容器化。运行 npx 命令并创建 Dockerfile 之后,我们得到了如图 1 所示文件结构。...Java 17正式发布, Oracle宣布免费提供!“版本任你发,Java 8”或成历史? Spring Boot 中使用@Async实现异步调用,加速任务执行!...帮你朋友进来看看:色情片伤害人体全过程 技术交流群 最近有很多人问,有没有读者交流群,想知道怎么加入。

38020

提升OpenShift上Java构建效率

总结: 整篇文章总结如下: 如果使用OpenShiftS2I, 直接上传源码(而非二进制包)并由OpenShift构建Java应用并构建镜像....那么以下办法可以提升java构建效率: 找一个靠谱制品库(可以是NEXUS或其他) BuildConfig配置ENV: MAVEN_MIRROR_URL BuildConfig中使用增量构建 (部分...此外,这些模板将允许您使用PersistentVolume或以短暂模式运行Nexus持久实例,如果该关系副本死了,您将丢失所有缓存依赖项。...创建了一个文件,该文件将安装与OpenShift安装中提供Nexus实例一起使用所需所有必需资源。...这将具有与将本地Maven存储库放入构建镜像本身相同行为,但缺点是无法获取以前构建镜像并从中获取依赖项。 为了测试此模式,创建了一个示例资源文件,可以轻松对其进行测试。

2.5K50

OpenRASP梳理总结

RASP诞生 RASP英文 Runtime application self-protection,即运行应用程序自我保护。...RASP 运行应用程序内部,监听每一个与应用程序交换节点,覆盖所有应用程序访问节点,包括:用户、数据库、网络和文件系统,从而实时监测并拦截漏洞攻击。...OpenRASP相当于在这栋大楼每个办公室里都设置了一位管家。坏人进入大楼,肯定是要做坏事。所以 OpenRASP思路是:你长了一张什么脸并不关心,重要是你有没有在房间里做出“攻击动作”。...黑客使用一种典型“广种薄收”策略,借助自动化工具,进行扫描,如果系统没有攻击价值,或没有掌握漏洞,黑客根本就不会对你采取下一步动作。...漏洞依然存在 使用 RASP 并不是真正建立一个安全应用,系统中存在漏洞还是存在。应用RASP,只是临时提供一个虚拟补丁修补上已知漏洞,如果不用RASP,这些漏洞还是存在。

1.4K30

静态 Java 现状:提升启动速度、减少空间占用而编译本地可执行文件

尽管它潜在应用场景有很多,但微服务、CLI 应用和无服务器部署是最佳候选场景。 它提供以下几项能力: 应用程序所有 Java 代码均为本地编译。 能够“关闭世界”防止其他类被加载。...这可以消除死代码,去除不使用方法和字段,从而使二进制文件更小。 能够在构建时初始化应用程序某些部分,以便进一步优化,避免在随后启动中进行多余工作。...还有就是利用构建时初始化将操作(如类初始化)从运行时转移到构建时。 对于堆不大应用程序来说,运行时空间占用改进最为明显,因为堆大小决定了类元数据所需内存。...一个比较好选择是,从 GraalVM 跟踪代理入手,创建支持在运行使用这些动态特性所需配置文件。静态 Java 要求之一是限制动态特性,需要在构建时明确选择。...为了真正推动主流采用,Java 需要意识到当前正在发生阶段性变化(构建时与运行时,检查点与恢复),开发者提供工具,让他们可以使用这门语言表达自己意思。

48430

为什么以及如何升级至 Java 16 或 17

事实上,大多数运行Java 9 以及更高版本上应用程序并没有在代码库中配置 Java 模块。 评估任何升级所需工作量都是一项挑战。那取决于多种因素,如依赖项数量及其现状。...举例来说,如果使用是 Spring Boot,那么升级 Spring Boot 可能已经解决大部分升级问题。遗憾是,由于存在不确定性,大部分开发人员会将升级工作量评估许多天、周甚或是月。...升级可能很困难,评估所需时间似乎是不可能,但通常,实际升级过程不会花那么多时间。在许多应用程序升级中,都见过同样问题。...但是,在一个干净、没有个性化设置 Docker 容器环境中试验一些东西或构建应用程序或许是一个不错注意。 为了说明这一点,我们创建了一个标准 Dockerfile 文件,其中包含下面的内容。...如果不行的话,你可以使用--add-opens 参数来获得对内部 API 访问。不过,除非不得已不要这样做。注意,有些工具在 Java 17 上还无法运行

1.2K10

Java是什么软件-详细解答Java到底是什么「建议收藏」

大家好,又见面了,是你们朋友全栈君。 许多想要接触计算机编程朋友对于开发语言没有一个系统性概念,会问出类似于Java是什么软件?...简单来说java它是个面向网络程序设计语言,用来让程序员创建应用程序,这些应用程序可以通过网络下载,而且可在任何计算平台上安全地运行。...如果再加上万维网和公司内部网体系,你将会拥有一个标准网络计算环境,Java作为一个分布式,面向对象程序设计语言,可以让位于任何地方任何计算机应用网络上应用程序。...运行Java,不必非得在网络环境中进行,Java同其他传统诸如COBOL或 Basic这样程序设计语言一样,可以创建独立运行应用程序。只不过Java对互联网上应用开发更拿手。...现在程序员使用idea居多,因为提供插件种类多,更加好用, 同时颜值也是真的高!但是缺点是是闭源,也就是说,你想用的话要么花钱买,要么想办法激活成功教程!

72730

为什么以及如何升级至 Java 16 或 17

事实上,大多数运行Java 9 以及更高版本上应用程序并没有在代码库中配置 Java 模块。 评估任何升级所需工作量都是一项挑战。那取决于多种因素,如依赖项数量及其现状。...举例来说,如果使用是 Spring Boot,那么升级 Spring Boot 可能已经解决大部分升级问题。遗憾是,由于存在不确定性,大部分开发人员会将升级工作量评估许多天、周甚或是月。...升级可能很困难,评估所需时间似乎是不可能,但通常,实际升级过程不会花那么多时间。在许多应用程序升级中,都见过同样问题。...但是,在一个干净、没有个性化设置 Docker 容器环境中试验一些东西或构建应用程序或许是一个不错注意。 为了说明这一点,我们创建了一个标准 Dockerfile 文件,其中包含下面的内容。...如果不行的话,你可以使用--add-opens 参数来获得对内部 API 访问。不过,除非不得已不要这样做。注意,有些工具在 Java 17 上还无法运行

1.1K30

Exceptionless - .Net Core开源日志框架

这就是使用官网提供服务流程。使用非常简单,但在使用上也会存在一定问题。...大概意思就是电脑同时安装了.NET 4.0 和.NET 4.5或更高版本,这导致加密协议默认值 SSLv3和 TLSv1,而Powershell需要使用 Tls12才能正常使用 Invoke-WebRequest...那如果非得要在Powershell来执行,有没有办法呢?...这是在Windows系统下部署Exceptionless过程中遇到问题,但因为在官网上介绍是直接双击运行 Start.bat就完成部署,不知道其他朋友有没有遇到跟我一样问题。...这里就没有继续纠结怎么修改 Start-Website.ps1文件里面的脚本了哈,各位有感兴趣朋友可以研究后在留言区分享一下。

1.7K41

阿里人都在使用在线诊断工具—Arthas

遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? 线上遇到某个用户数据处理有问题,但线上同样无法 debug,线下无法重现! 是否有一个全局视角来查看系统运行状况?...有什么办法可以监控到JVM实时运行状态? 怎么快速定位应用热点,生成火焰图?...扩展:java Instrumentation指的是可以用独立于应用程序之外代理(agent)程序来监测和协助运行在JVM上应用程序。...(也可以直接增加pid监控,如:java -jar arthas-boot.jar pid)。在选择好pid之后,它首先会将 arthas所需jar相关文件进行下载,然后做一些初始化工作。...例如查看java.util.Stack类信息 对于Arthas使用最近会出一个整套系列文章,来讲述我们日常是怎么用Arthas定位和排查问题!

68710

网易有道CEO周枫:Go语言继承了C语言灵活简单

认为Go很好地继承了C语言灵活、简单有效思想;Go有很高生产效率;Go精选了一些复杂事情优秀解决办法,通过语言功能和标准库提供出来。...第二个例子是调用C代码cgo设计,使用JavaJNI(包括AndroidNDK)朋友应该知道,那来回生成.h文件,自己编译DLL/.so感觉是很酸爽。...有一种形式生产力来自于“能缓存住所有东西”。 无法想象,如果没有支持自动完成、或立即语法检查等功能IDE情况下,Java编程生产效率。...它静态地编译成二进制文件,因此运行时需求非常低。Java、Python、C#等要求容器具有相应运行时安装正确版本。而编写Go应用程序很容易,它只使用普通Linux容器,而不需要额外依赖。...它允许将一个应用程序作为单一可执行二进制文件交付。 为什么不是每个人都用它呢?首先,它是新知道许多企业仍然在运行PowerBuilder应用程序和基于JDK 6服务。

889120

Android App 除了 Java 和 Kotlin 没有第三个选择?怎么可能~!

有没有什么办法可以快速做出一个安卓应用程序呢?办法当然是有的,我们可以使用 React Native 来编写安卓应用程序。...最终产品是一个真正移动应用,从使用感受上和用 Objective-C 或 Java 编写应用相比几乎是无法区分。React Native 所使用基础UI组件和原生应用完全一致。...在这里,安装过程就不做讲解了。 创建新项目 搭建好开发环境之后就应该创建一个新项目了,创建新项目之前如果你全局安装过旧 react-native-cli 命令行工具请先卸载掉以免产生冲突。...接下来我们直接使用 PyCharm 来创建一个项目。哈~?!还能用 PyCharm 来创建 React Native 应用程序?当然可以,新建项目,弹出如图所示界面。 ?...接着使用命令:yarn react-native run-android 来安装运行安卓应用程序运行之后结果如图所示。 ?

1.2K10

小白都能看懂 Spring Boot 入门指南!

使用 Spring Boot 可以很容易创建一个独立运行、基于 Spring 生产级应用程序,而且Spring Boot 对 Spring 平台和第三方库做了一些版本适配,这样我们就可以尽快上手。...使用 Spring Boot 来不仅可以创建基于 war 方式部署传统Java应用程序,也可以通过创建独立不依赖任何容器(如 tomcat 等)应用,只需使用java -jar” 就能启动。...Spring Boot 还提供了一个运行 "spring scripts " 命令行工具。 Spring Boot 设计目标 所有的 Spring 开发提供一个从根本上更快、更广泛入门体验。...这里使用IDE 是 Intellij IDEA 。 第一步 打开Intellij IDEA 使用 Spring Initializr 向导 新建 Hello World项目 ?...如果我们想看一下 hello-0.0.1-SNAPSHOT.jar 里面包含那些内容,有没有什么快速办法呢,这里给大家提供一个命令行方法,使用 “jar tvf ” 就行。

58930
领券