Analysis of container and Injection in Java, their history and future

container

原因:

随着软件开发的发展,相比于早期的集中式应用部署方式,现在的应用基本都是采用分布式的部署方式,一个应用可能包含多种服务或多个模块,因此多种服务可能部署在多种环境中,如虚拟服务器、公有云、私有云等,由于多种服务之间存在一些依赖关系,所以可能存在应用在运行过程中的动态迁移问题,那这时如何保证不同服务在不同环境中都能平滑的适配,不需要根据环境的不同而去进行相应的定制,就显得尤为重要。而container技术和虚拟机一样,容器技术也是一种资源隔离的虚拟化技术,容器概念始于 1979 年提出的 UNIX chroot,它是一个 UNIX 操作系统的系统调用,将一个进程及其子进程的根目录改变到文件系统中的一个新位置,让这些进程只能访问到这个新的位置,从而达到了进程隔离的目的,然后采用集装箱思想,为应用提供了一个基于容器的标准化运输系统,就像货物的运输问题一样,如何将不同的货物放在不同的运输机器上,减少因货物的不同而频繁进行货物的装载和卸载,浪费大量的人力物力。

发展历程:

2000 年的时候 FreeBSD 开发了一个类似于 chroot 的容器技术 Jails,这是最早期,也是功能最多的容器技术。Jails 英译过来是监狱的意思,这个“监狱”(用沙盒更为准确)包含了文件系统、用户、网络、进程等的隔离。

2001 Linux 也发布自己的容器技术 Linux VServer,2004 Solaris 也发布了 Solaris Containers,两者都将资源进行划分,形成一个个 zones,又叫做虚拟服务器。

2005 年推出 OpenVZ,它通过对 Linux 内核进行补丁来提供虚拟化的支持,每个 OpenVZ 容器完整支持了文件系统、用户及用户组、进程、网络、设备和 IPC 对象的隔离。

2007 年 Google 实现了 Control Groups( cgroups ),并加入到 Linux 内核中,这是划时代的,为后期容器的资源配额提供了技术保障。

2008 年基于 cgroups 和 linux namespace 推出了第一个最为完善的 Linux 容器 LXC。

2013 年推出到现在为止最为流行和使用最广泛的容器 Docker,相比其他早期的容器技术,Docker 引入了一整套容器管理的生态系统,包括分层的镜像模型,容器注册库,友好的 Rest API。

2014 年 CoreOS 也推出了一个类似于 Docker 的容器 Rocket,CoreOS 一个更加轻量级的 Linux 操作系统,在安全性上比 Docker 更严格。

2016 年微软也在 Windows 上提供了容器的支持,Docker 可以以原生方式运行在 Windows 上,而不是需要使用 Linux 虚拟机

未来趋势:

我认为container技术目前已经发展的相对成熟了,它和服务器虚拟化都属于虚拟化的技术,且目标都是为了将一套应用程序所需的执行环境打包起来,建立一个孤立环境,方便在不同的硬件中移动,但为什么我认为container技术发展会更有前景。简单来说,常见的传统虚拟化技术如 vSphere 或 Hyper-V 是以操作系统为中心,而 Container 技术则是一种以应用程序为中心的虚拟化技术。最明显的差别是虚拟机需要安装操作系统(安装 Guest OS)才能执行应用程序,而 Container 内不需要安装操作系统就能执行应用程序。container简化了应用在开发测试部署环节的复杂度,相比虚拟机资源开销更小,起停速度更快,且container推出轻量级组件化的架构,为互联网应用提供更好的弹性。

injection

javava EE CDI主要使用@Inject批注,以便将托管bean的依赖注入执行到其他容器托管资源。使用依赖注入的思想是应用程序用到Foo类,Foo类需要Bar类,Bar类需要Bim类,那么先创建Bim类,再创建Bar类并把Bim注入,再创建Foo类,并把Bar类注入,再调用Foo方法,Foo调用Bar方法,接着做些其它工作。

转载于:https://www.cnblogs.com/qibajiuyue/p/10589067.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《数据结构与算法分析Java语言描述(第三版)》是一本介绍数据结构和算法分析的Java编程书籍。该书全面讲解了数据结构以及如何分析不同算法的性能,为读者提供了深入理解和实践的机会。 这本书首先介绍了Java语言的基本概念和编程技巧,以便读者能够在后续章节中更好地理解和实现数据结构和算法。接下来,书中详细讲解了各种常见的数据结构,如数组、链表、栈、队列、树和图等。每种数据结构都提供了相应的Java实现代码,并包含了对应的算法分析和性能评估。 此外,书中还介绍了常用的算法设计技巧,如递归、分治法、贪心算法和动态规划等。这些技巧都通过具体的示例和实践案例讲解,帮助读者理解和掌握不同算法的思想和实现方式。 《数据结构与算法分析Java语言描述(第三版)》还包含了大量的习题和实践项目,供读者巩固知识和提高编程能力。习题涵盖了各个章节的内容,并提供了答案和解析,方便读者自我学习和检验。 总的来说,这本书适合那些希望深入了解数据结构和算法,并通过Java语言来实现和分析的读者。无论是学生、程序员还是科研人员,都可以通过阅读和实践这本书来提升自己的编程能力和算法思维。 ### 回答2: 《Java数据结构与算法分析(第3版)》是一本介绍Java语言中数据结构和算法分析的书籍。该书的作者是Mark Allen Weiss。 该书的主要内容包括数据结构的基本概念和Java中的实现,以及算法分析和设计的相关内容。读者可以学习到不同的数据结构如链表、栈、队列、树、图等的概念和使用方法,以及它们在Java中的实现。 此外,该书还介绍了算法分析的基本概念和技巧,如时间复杂度和空间复杂度的分析方法,适用于不同场景下的算法选择等。读者可以学习到如何评估一个算法的效率并进行优化。 《Java数据结构与算法分析(第3版)》的优点在于结合了Java语言的特点,给出了具体的代码实现,并配有详细的注释和解析。这样的设计使得读者可以更好地理解和运用所学的知识。 此外,该书还提供了大量的习题和编程实践,使得读者能够通过实践巩固所学的知识,并且进一步提高编程能力和解决问题的能力。 总而言之,《Java数据结构与算法分析(第3版)》是一本适合Java程序员学习和深入理解数据结构和算法的优秀教材。无论是刚入门的初学者还是有一定编程经验的开发者,都可以从中获得很大的收益。 ### 回答3: 《Data Structures and Algorithm Analysis in Java》第3版是一本介绍Java中数据结构和算法分析的经典教材。该教材由Mark Allen Weiss撰写,旨在教授学生如何设计和分析有效的数据结构和算法。 该教材涵盖了广泛的主题,包括基本数据结构(如栈、队列和链表)、树和二叉树、图和图算法、排序和搜索算法等。它提供了大量的示例代码和练习问题,以帮助学生加深对Java编程的理解,并提供了解决问题的思路和方法。 与第2版相比,第3版在内容和例子方面进行了更新和增加。它介绍了新的数据结构和算法,并使用了更现代的Java语言特性。此外,该版教材还强调了面向对象的设计思想和分析方法,提供了更深入的代码示例和分析。 这本教材对初学者和有一定编程经验的读者都非常适用。它可以作为大学本科课程的教材,也可以作为自学的参考书。读者通过学习该教材,可以提高自己的编程技能,提升对数据结构和算法的理解和应用能力。 综上所述,《Data Structures and Algorithm Analysis in Java》第3版是一本涵盖了Java中数据结构和算法的经典教材。它不仅帮助读者学习和理解数据结构和算法的基本概念,还提供了丰富的示例和练习问题,帮助读者加深对Java编程的理解和实践能力。无论是在学校课堂还是自学过程中,该教材都是一本非常有价值的参考书。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值