摘要
随着2022年Spring 6和Spring Boot 3.0的发布,最低支持版本从Java 8提升至JDK 17。这一变化让许多开发者感到意外。本文将探讨企业选择JDK 17的原因,包括技术进步、市场需求及企业决策等多方面因素。尽管不再支持Java 8,但转向JDK 17为企业带来了性能优化与安全增强等诸多优势。
关键词
Spring Boot 3.0, Java 8兼容性, JDK 17支持, 企业决策, 技术趋势
随着2022年Spring 6和Spring Boot 3.0的发布,这一版本不仅带来了众多令人瞩目的新特性,更标志着Java生态系统的一个重要转折点。Spring Boot 3.0的核心目标是为开发者提供更加现代化、高效且安全的开发环境。以下是该版本的一些主要更新:
首先,最低支持版本从Java 8提升至JDK 17。这一变化不仅仅是简单的版本升级,更是对现代Java特性的全面拥抱。JDK 17作为长期支持(LTS)版本,引入了许多性能优化和安全增强功能,如改进的垃圾回收机制、更好的并发处理能力以及新的语言特性,这些都使得应用程序在运行时更加稳定和高效。
其次,Spring Boot 3.0在框架层面进行了大量重构,以更好地适应微服务架构的发展趋势。它增强了对云原生的支持,提供了更简便的容器化部署方式,并集成了更多现代化的工具和技术,如Kubernetes、Istio等。此外,Spring Boot 3.0还优化了依赖管理和自动配置机制,减少了不必要的冗余代码,提高了开发效率。
最后,为了确保与最新技术标准保持同步,Spring Boot 3.0对一些过时的API进行了移除或弃用,同时增加了对新兴技术的支持,如GraalVM、Micronaut等。这些改动虽然可能给部分开发者带来短期的不适应,但从长远来看,无疑将推动整个Java社区向更高水平迈进。
尽管Spring Boot 3.0带来了诸多创新和改进,但其不再支持Java 8的消息却让许多开发者感到意外。自2014年发布以来,Java 8凭借其简洁的语法和强大的功能迅速成为企业级应用开发的主流选择。然而,随着时间的推移,Java社区不断推出新的版本,每个版本都带来了不同程度的技术进步和性能提升。到了2022年,当Spring 6和Spring Boot 3.0决定将最低支持版本提升至JDK 17时,这意味着所有基于Java 8构建的应用程序都需要进行相应的升级。
这一决策背后的原因复杂多样。从技术角度来看,JDK 17相比Java 8有着显著的优势:更快的启动速度、更低的内存占用、更强的安全性和稳定性。更重要的是,JDK 17作为一个长期支持版本,能够获得持续的安全更新和技术支持,这对于企业级应用来说至关重要。此外,随着云计算和微服务架构的普及,越来越多的企业开始采用容器化和无服务器计算等新技术,而这些技术往往需要更高的Java版本才能充分发挥其潜力。
对于那些仍然依赖Java 8的企业而言,转向JDK 17并非易事。他们不仅要面对代码库的全面审查和重构,还需要投入大量时间和资源来培训团队成员,确保他们掌握最新的Java特性和最佳实践。因此,尽管Spring Boot 3.0的更新带来了许多好处,但对于某些企业来说,这无疑是一个巨大的挑战。
Spring Boot 3.0不再支持Java 8的决定,对开发者群体产生了深远的影响。一方面,这一变化促使开发者们不得不重新审视自己的技术栈,考虑是否要跟随社区的步伐,逐步迁移到更高版本的Java。对于那些已经熟悉Java 8的开发者来说,学习新特性和调整编程习惯可能会带来一定的压力。然而,这也是一次难得的机会,让他们接触到更先进的技术和理念,从而提升自身的竞争力。
另一方面,这一决策也加速了Java生态系统的演进。随着越来越多的企业和个人开发者选择升级到JDK 17,整个社区将逐渐形成一个更加统一的技术标准。这不仅有助于减少不同版本之间的兼容性问题,还能促进更多高质量开源项目的诞生和发展。此外,JDK 17带来的性能优化和安全增强功能,也将使开发者能够构建出更加可靠、高效的软件系统。
当然,迁移过程中难免会遇到各种困难和挑战。例如,某些第三方库可能尚未完全适配JDK 17,导致项目无法顺利编译或运行;又或者,由于历史遗留代码的存在,部分模块难以直接移植到新版本中。面对这些问题,开发者们需要保持耐心和灵活性,积极寻求解决方案,如查阅官方文档、参与社区讨论或借助专业工具和服务的帮助。
总之,Spring Boot 3.0与Java 8兼容性问题的出现,既是对开发者的一次考验,也是推动整个Java社区向前发展的重要契机。通过不断学习和适应新技术,我们相信每一位开发者都能在这个充满变革的时代中找到属于自己的位置,共同创造更加美好的未来。
随着技术的不断进步,Java生态系统也在持续演进。Spring Boot 3.0将最低支持版本提升至JDK 17,这一决策不仅仅是对Java版本的简单升级,更是对整个技术趋势的积极响应。JDK 17作为长期支持(LTS)版本,带来了许多重要的性能优化和安全增强功能,这些改进使得应用程序在运行时更加稳定和高效。
从技术角度来看,JDK 17引入了多项创新特性,如改进的垃圾回收机制、更好的并发处理能力以及新的语言特性。这些特性不仅提升了开发效率,还为开发者提供了更多的工具来构建高性能的应用程序。例如,ZGC(Z Garbage Collector)和Shenandoah GC等新型垃圾回收器,能够在不影响应用程序响应时间的情况下,显著降低内存占用和停顿时间。这对于需要处理大量数据的企业级应用来说尤为重要。
此外,JDK 17还增强了对云原生的支持,这与当前的技术发展趋势不谋而合。随着云计算和微服务架构的普及,越来越多的企业开始采用容器化和无服务器计算等新技术。JDK 17通过提供更简便的容器化部署方式和更好的资源管理能力,使得这些技术能够充分发挥其潜力。例如,JVM的启动时间和内存占用得到了显著优化,这对于频繁启动和停止的容器化应用至关重要。
与此同时,JDK 17还引入了一些新的语言特性,如密封类(Sealed Classes)和模式匹配(Pattern Matching),这些特性不仅简化了代码编写,还提高了代码的可读性和维护性。对于开发者而言,这意味着他们可以编写出更加简洁、高效的代码,从而提升整体开发体验。
总之,Spring Boot 3.0选择JDK 17作为最低支持版本,不仅是对现代Java特性的全面拥抱,更是对技术趋势的敏锐洞察。通过紧跟技术前沿,Spring Boot 3.0为企业和开发者提供了更加现代化、高效且安全的开发环境,推动了整个Java社区向更高水平迈进。
市场需求的变化是推动技术进步的重要动力之一。随着企业对性能、安全性和稳定性的要求不断提高,传统的Java 8已经难以满足日益增长的需求。因此,Spring Boot 3.0将最低支持版本提升至JDK 17,这一决策正是为了更好地适应市场变化,满足企业级应用的需求。
首先,企业在选择技术栈时,越来越注重性能和安全性。JDK 17相比Java 8有着显著的优势:更快的启动速度、更低的内存占用、更强的安全性和稳定性。这些特性不仅提升了应用程序的运行效率,还降低了潜在的安全风险。例如,JDK 17引入了多项安全增强功能,如TLS 1.3协议的支持和更强的加密算法,这些都使得应用程序在网络传输和数据保护方面更加可靠。
其次,随着云计算和微服务架构的普及,越来越多的企业开始采用容器化和无服务器计算等新技术。JDK 17通过提供更简便的容器化部署方式和更好的资源管理能力,使得这些技术能够充分发挥其潜力。例如,Kubernetes和Istio等云原生工具的集成,使得企业可以更轻松地实现自动化部署和运维,从而提高生产效率。
此外,市场需求的变化也体现在对新兴技术的支持上。JDK 17增加了对GraalVM、Micronaut等新兴技术的支持,这些技术不仅提升了开发效率,还为企业提供了更多的选择。例如,GraalVM可以通过即时编译(JIT)和提前编译(AOT)相结合的方式,显著提升应用程序的启动速度和运行性能。这对于需要快速响应的互联网应用来说尤为重要。
最后,市场需求的变化还体现在对开源社区的依赖上。随着越来越多的企业和个人开发者选择升级到JDK 17,整个社区将逐渐形成一个更加统一的技术标准。这不仅有助于减少不同版本之间的兼容性问题,还能促进更多高质量开源项目的诞生和发展。例如,Spring Boot 3.0的更新使得开发者可以更容易地使用最新的库和框架,从而加速项目开发进程。
总之,Spring Boot 3.0选择JDK 17作为最低支持版本,不仅是对市场需求的积极响应,更是为了更好地满足企业级应用的需求。通过不断提升性能、安全性和稳定性,Spring Boot 3.0为企业和开发者提供了更加可靠的开发环境,助力他们在激烈的市场竞争中脱颖而出。
企业在做出技术决策时,往往会综合考虑多方面的因素。Spring Boot 3.0将最低支持版本提升至JDK 17,这一决策背后不仅有技术层面的考量,还涉及到企业决策的多个维度。通过深入分析这些因素,我们可以更好地理解为什么企业会选择JDK 17,而不是继续停留在Java 8。
首先,企业决策的一个重要考量是成本效益。尽管升级到JDK 17可能需要投入一定的资源和时间,但从长远来看,这一决策将带来显著的成本节约。JDK 17作为一个长期支持(LTS)版本,能够获得持续的安全更新和技术支持,这对于企业级应用来说至关重要。相比之下,Java 8虽然仍然广泛使用,但其支持周期即将结束,未来可能会面临更多的安全漏洞和兼容性问题。因此,选择JDK 17不仅可以确保系统的安全性,还能减少未来的维护成本。
其次,企业决策还受到市场需求的影响。随着云计算和微服务架构的普及,越来越多的企业开始采用容器化和无服务器计算等新技术。JDK 17通过提供更简便的容器化部署方式和更好的资源管理能力,使得这些技术能够充分发挥其潜力。例如,Kubernetes和Istio等云原生工具的集成,使得企业可以更轻松地实现自动化部署和运维,从而提高生产效率。此外,JDK 17还增加了对GraalVM、Micronaut等新兴技术的支持,这些技术不仅提升了开发效率,还为企业提供了更多的选择。
第三,企业决策还需要考虑团队的技术能力和培训成本。尽管转向JDK 17可能给部分开发者带来短期的不适应,但从长远来看,这无疑将提升团队的整体技术水平。JDK 17引入了许多新的语言特性和工具,如密封类(Sealed Classes)和模式匹配(Pattern Matching),这些特性不仅简化了代码编写,还提高了代码的可读性和维护性。对于开发者而言,这意味着他们可以编写出更加简洁、高效的代码,从而提升整体开发体验。此外,通过参与社区讨论和培训课程,团队成员可以更快地掌握新技能,进一步提升企业的竞争力。
最后,企业决策还需要考虑市场的竞争压力。随着越来越多的企业和个人开发者选择升级到JDK 17,整个社区将逐渐形成一个更加统一的技术标准。这不仅有助于减少不同版本之间的兼容性问题,还能促进更多高质量开源项目的诞生和发展。例如,Spring Boot 3.0的更新使得开发者可以更容易地使用最新的库和框架,从而加速项目开发进程。对于企业而言,这意味着他们可以在市场上占据更有利的位置,赢得更多的客户和合作伙伴。
总之,Spring Boot 3.0选择JDK 17作为最低支持版本,不仅是对技术趋势的积极响应,更是对企业决策的深思熟虑。通过综合考虑成本效益、市场需求、团队能力和市场竞争等多个因素,企业可以选择最适合自己的技术路径,从而在激烈的市场竞争中立于不败之地。
在企业决定从Java 8迁移到JDK 17的过程中,制定一个详细的迁移计划至关重要。这不仅有助于确保迁移过程顺利进行,还能最大限度地减少对现有业务的影响。以下是迁移至JDK 17的具体步骤:
首先,企业需要对其现有的技术栈进行全面评估。这包括检查所有依赖库、框架和工具是否支持JDK 17。对于那些尚未适配JDK 17的第三方库,企业应提前与供应商沟通,了解其更新计划或寻找替代方案。此外,还需审查代码库,识别出可能存在问题的模块或功能,为后续的重构工作做好准备。
在正式迁移之前,建立一个独立的测试环境是必不可少的。这个环境中应尽可能模拟生产环境的配置,以确保测试结果具有代表性。通过在测试环境中运行应用程序,可以提前发现并解决潜在的问题,避免在实际迁移过程中出现意外情况。建议使用容器化技术(如Docker)来快速搭建和管理测试环境,这样不仅可以提高效率,还能保证环境的一致性。
为了降低风险,企业可以选择分阶段进行迁移。例如,可以从非核心模块开始,逐步将各个部分迁移到JDK 17。每个阶段完成后,都需要进行全面的回归测试,确保新版本的应用程序能够正常运行且没有引入新的问题。随着迁移进度的推进,逐渐扩大到核心模块,最终实现整个系统的全面升级。
迁移不仅仅是技术上的挑战,也是对团队能力的一次考验。因此,在迁移过程中,企业应重视对开发人员的培训。组织内部培训课程或邀请外部专家进行指导,帮助团队成员掌握JDK 17的新特性和最佳实践。通过这种方式,不仅可以提升团队的技术水平,还能增强他们对新技术的信心,从而更好地应对未来的挑战。
尽管有详细的规划和充分的准备,但在实际迁移过程中,仍然可能会遇到各种各样的问题。这些问题不仅会影响迁移进度,还可能导致项目失败。因此,提前预见到这些挑战,并制定相应的应对措施显得尤为重要。
由于某些第三方库尚未完全适配JDK 17,可能会导致项目无法顺利编译或运行。这种情况在早期版本的库中尤为常见。为了解决这一问题,企业需要密切关注社区动态,及时获取最新的库更新信息。如果短期内无法获得适配版本,可以考虑寻找替代库或自行修改源码,以确保项目的正常进行。
虽然JDK 17带来了许多性能优化,但在特定场景下,仍可能出现性能瓶颈。例如,某些旧版代码在新版本中可能会表现出较差的性能表现,尤其是在并发处理和内存管理方面。面对这种情况,企业可以通过性能分析工具(如JProfiler、VisualVM等)进行深入排查,找出问题根源,并采取针对性的优化措施,如调整垃圾回收策略或改进算法设计。
随着JDK版本的升级,一些旧的安全机制可能不再适用,甚至存在安全隐患。例如,某些加密算法在新版本中已被弃用,继续使用可能导致安全风险。因此,企业在迁移过程中必须高度重视安全性,定期进行安全审计,确保所有敏感数据得到妥善保护。同时,积极跟进官方发布的安全补丁,及时修复已知漏洞,保障系统的安全性。
针对迁移过程中可能遇到的问题,企业可以采取一系列解决方案和最佳实践,以确保迁移工作的顺利进行。
自动化工具在迁移过程中扮演着重要角色。通过使用CI/CD(持续集成/持续交付)平台,如Jenkins、GitLab CI等,可以实现代码自动构建、测试和部署,大大提高了工作效率。此外,还可以利用静态代码分析工具(如SonarQube)来检测代码中的潜在问题,提前预防错误的发生。这些工具不仅简化了开发流程,还能帮助企业更好地维护代码质量。
Java社区是一个充满活力和技术资源的地方。企业在迁移过程中遇到困难时,不妨积极参与社区讨论,寻求其他开发者的帮助和支持。无论是通过官方论坛、社交媒体还是线下活动,都可以找到志同道合的人士分享经验和解决问题的方法。此外,关注官方文档和技术博客,及时获取最新资讯和技术指南,也有助于顺利完成迁移工作。
技术的发展日新月异,企业要想在激烈的市场竞争中立于不败之地,就必须保持持续学习的态度。鼓励团队成员参加各类技术培训和研讨会,不断更新知识体系,掌握最新的技术和工具。同时,勇于尝试新兴技术,如GraalVM、Micronaut等,为企业带来更多的可能性和发展机遇。通过不断创新,企业可以在迁移过程中积累宝贵的经验,为未来的发展奠定坚实的基础。
总之,迁移至JDK 17不仅是技术上的升级,更是企业迈向现代化的重要一步。通过科学合理的规划、有效的应对措施以及持续的学习创新,企业一定能够在这一变革中取得成功,迎接更加美好的未来。
随着Spring Boot 3.0将最低支持版本提升至JDK 17,这不仅是对当前技术趋势的积极响应,更是对未来Java版本发展方向的一次重要展望。JDK 17作为长期支持(LTS)版本,不仅带来了显著的性能优化和安全增强功能,还为未来的Java版本奠定了坚实的基础。
从技术演进的角度来看,Java社区一直在不断探索新的可能性。根据Oracle的官方路线图,未来的Java版本将继续保持每六个月发布一次新特性的小版本更新,并且每隔三年推出一个LTS版本。这种发布策略确保了Java能够紧跟技术前沿,同时为企业级应用提供稳定的支持。例如,JDK 21预计将在2023年9月发布,它将进一步引入多项创新特性,如虚拟线程(Virtual Threads)、结构化并发(Structured Concurrency)等,这些特性将极大地提升多线程编程的效率和可靠性。
此外,Java社区也在积极拥抱云原生和微服务架构的发展趋势。随着越来越多的企业采用容器化和无服务器计算等新技术,Java需要不断适应这些变化。未来的Java版本将更加注重与云平台的集成,提供更简便的容器化部署方式和更好的资源管理能力。例如,JVM的启动时间和内存占用将进一步优化,使得频繁启动和停止的容器化应用能够更加高效地运行。与此同时,Java还将加强对新兴技术的支持,如GraalVM、Micronaut等,这些技术不仅提升了开发效率,还为企业提供了更多的选择。
更重要的是,Java社区始终致力于提高语言本身的表达力和易用性。未来的Java版本将继续引入新的语言特性,如模式匹配(Pattern Matching)的进一步扩展、记录类(Record Classes)的完善等。这些特性不仅简化了代码编写,还提高了代码的可读性和维护性。对于开发者而言,这意味着他们可以编写出更加简洁、高效的代码,从而提升整体开发体验。
总之,未来Java版本的发展方向不仅仅是技术上的升级,更是对整个生态系统的一次全面优化。通过不断创新和改进,Java将继续保持其在企业级应用开发中的领先地位,为开发者和企业提供更加现代化、高效且安全的开发环境。
面对Spring Boot 3.0不再支持Java 8这一重大变化,开发者们需要积极应对,以确保自身的技术栈能够跟上时代的步伐。以下是一些建议,帮助开发者顺利过渡到JDK 17并充分利用其带来的优势。
首先,开发者应尽快熟悉JDK 17的新特性和最佳实践。JDK 17引入了许多重要的改进,如改进的垃圾回收机制、更好的并发处理能力以及新的语言特性。例如,ZGC(Z Garbage Collector)和Shenandoah GC等新型垃圾回收器能够在不影响应用程序响应时间的情况下,显著降低内存占用和停顿时间。这对于需要处理大量数据的企业级应用来说尤为重要。此外,密封类(Sealed Classes)和模式匹配(Pattern Matching)等新特性不仅简化了代码编写,还提高了代码的可读性和维护性。因此,开发者可以通过阅读官方文档、参与社区讨论或参加培训课程,快速掌握这些新特性。
其次,开发者应重视代码库的审查和重构工作。由于历史遗留代码的存在,部分模块可能难以直接移植到JDK 17中。因此,在迁移过程中,开发者需要仔细检查代码库,识别出可能存在问题的模块或功能,并进行相应的调整。例如,某些第三方库可能尚未完全适配JDK 17,导致项目无法顺利编译或运行。为了解决这一问题,开发者可以密切关注社区动态,及时获取最新的库更新信息。如果短期内无法获得适配版本,可以考虑寻找替代库或自行修改源码,以确保项目的正常进行。
第三,开发者应积极参与社区交流,寻求其他开发者的帮助和支持。Java社区是一个充满活力和技术资源的地方。无论是通过官方论坛、社交媒体还是线下活动,都可以找到志同道合的人士分享经验和解决问题的方法。此外,关注官方文档和技术博客,及时获取最新资讯和技术指南,也有助于顺利完成迁移工作。通过积极参与社区交流,开发者不仅可以解决遇到的问题,还能拓展自己的人脉和技术视野。
最后,开发者应保持持续学习的态度,勇于尝试新兴技术。技术的发展日新月异,只有不断更新知识体系,掌握最新的技术和工具,才能在激烈的市场竞争中立于不败之地。例如,GraalVM、Micronaut等新兴技术不仅提升了开发效率,还为企业提供了更多的选择。通过不断创新,开发者可以在迁移过程中积累宝贵的经验,为未来的发展奠定坚实的基础。
总之,面对Spring Boot 3.0不再支持Java 8这一变化,开发者们需要积极应对,通过熟悉新特性、审查代码库、参与社区交流和持续学习,确保自身的技术栈能够跟上时代的步伐,迎接更加美好的未来。
Spring Boot 3.0将最低支持版本提升至JDK 17,这一决策不仅对开发者产生了深远的影响,也对整个行业带来了巨大的变革。从企业级应用开发到开源社区建设,这一变化正在推动Java生态系统的全面升级。
首先,这一决策加速了企业级应用开发的现代化进程。随着越来越多的企业和个人开发者选择升级到JDK 17,整个社区将逐渐形成一个更加统一的技术标准。这不仅有助于减少不同版本之间的兼容性问题,还能促进更多高质量开源项目的诞生和发展。例如,Spring Boot 3.0的更新使得开发者可以更容易地使用最新的库和框架,从而加速项目开发进程。对于企业而言,这意味着他们可以在市场上占据更有利的位置,赢得更多的客户和合作伙伴。
其次,这一决策推动了云计算和微服务架构的普及。JDK 17通过提供更简便的容器化部署方式和更好的资源管理能力,使得云计算和微服务架构能够充分发挥其潜力。例如,Kubernetes和Istio等云原生工具的集成,使得企业可以更轻松地实现自动化部署和运维,从而提高生产效率。此外,JDK 17还增加了对GraalVM、Micronaut等新兴技术的支持,这些技术不仅提升了开发效率,还为企业提供了更多的选择。随着越来越多的企业采用这些新技术,整个行业的技术水平将得到显著提升。
第三,这一决策促进了Java社区的健康发展。随着越来越多的企业和个人开发者选择升级到JDK 17,整个社区将逐渐形成一个更加统一的技术标准。这不仅有助于减少不同版本之间的兼容性问题,还能促进更多高质量开源项目的诞生和发展。例如,Spring Boot 3.0的更新使得开发者可以更容易地使用最新的库和框架,从而加速项目开发进程。此外,随着社区的不断发展,更多的开发者将参与到开源项目中来,共同推动Java生态系统的繁荣。
最后,这一决策提升了整个行业的安全性和稳定性。JDK 17相比Java 8有着显著的优势:更快的启动速度、更低的内存占用、更强的安全性和稳定性。这些特性不仅提升了应用程序的运行效率,还降低了潜在的安全风险。例如,JDK 17引入了多项安全增强功能,如TLS 1.3协议的支持和更强的加密算法,这些都使得应用程序在网络传输和数据保护方面更加可靠。随着越来越多的企业采用JDK 17,整个行业的安全性和稳定性将得到显著提升。
总之,Spring Boot 3.0将最低支持版本提升至JDK 17,这一决策不仅对开发者产生了深远的影响,也对整个行业带来了巨大的变革。通过加速企业级应用开发的现代化进程、推动云计算和微服务架构的普及、促进Java社区的健康发展以及提升整个行业的安全性和稳定性,这一变化正在推动Java生态系统的全面升级,迎接更加美好的未来。
Spring Boot 3.0将最低支持版本提升至JDK 17,标志着Java生态系统迈向了一个新的里程碑。这一决策不仅反映了技术趋势的演进,也回应了市场需求的变化和企业决策的深思熟虑。JDK 17作为长期支持(LTS)版本,带来了显著的性能优化和安全增强功能,如改进的垃圾回收机制、更好的并发处理能力以及新的语言特性,这些都使得应用程序更加稳定和高效。
对于开发者而言,尽管迁移过程中可能会遇到第三方库兼容性、性能瓶颈和安全漏洞等问题,但通过科学合理的规划、有效的应对措施以及持续的学习创新,可以确保迁移工作的顺利进行。同时,随着越来越多的企业和个人开发者选择升级到JDK 17,整个社区将逐渐形成一个更加统一的技术标准,减少不同版本之间的兼容性问题,并促进更多高质量开源项目的诞生和发展。
展望未来,Java版本将继续保持每六个月发布一次新特性的小版本更新,并每隔三年推出一个LTS版本。未来的Java版本将进一步引入虚拟线程、结构化并发等创新特性,继续提升多线程编程的效率和可靠性。总之,Spring Boot 3.0与JDK 17的结合,不仅为企业和开发者提供了更加现代化、高效且安全的开发环境,也为Java生态系统的全面升级奠定了坚实的基础。