I have an old Vaadin 7 application, and I'm trying to upgrade the Spring Boot version from 1.5.22.RELEASE to 2.0.9.RELEASE. I keep running into errors. Should this even work? I can't find any documentation about the version compatibility.
Edit:
The errors are along the lines of java.lang.NoClassDefFoundError: org/springframework/boot/bind/RelaxedPropertyResolver due to the various API changes between the Spring versions.
The official Vaadin Spring Boot add-on 1.2.x branch that is meant to be used with Vaadin 7 only seems to support Spring Boot 1.5. The 3.x branch of the add-on for current Vaadin 8 versions apparently works with both, but those changes haven't been backported to the older branch and the newer branch doesn't work with Vaadin 7. Applying the Spring Boot Migration Guide to my project itself doesn't do the trick thanks to the add-on incompatibility.
Unfortunately not, Vaadin 7 is only compatible up to Spring Boot 1.5. If you want to use Spring Boot 2.x, you have three options:
Upgrade your project to use Vaadin 8 (compatible with both Spring Boot 1.5 and 2.x), see migration guide for details. In most cases this is fairly straightforward with the help of the compatibility classes. It's probably a good idea to do the Vaadin version upgrade first, and only upgrade Spring Boot version after the application is already running on Vaadin 8 (that way it's easier to figure out which upgrade to blame if there are any problems). However, it should be noted that the free support of Vaadin 8 will end in February 2022 already, although the commercial extended support will be available for 10 more years after that.
Create a new Vaadin 14 project (only compatible with Spring Boot 2.x, the starter app generated by start.vaadin.com is Spring Boot based by default), purchase a Vaadin subscription that includes Multiplatform Runtime which allows you to use Vaadin 7 classes from within Vaadin 14, and insert your old views into the new project with the help of the MPR wrappers. Remember to leave out your old Vaadin 7 Spring add-on, and to use the new one that is wired through Flow Servlet instead. This option requires a bit more initial effort (and the subscription), but gives you a leg up to continue converting your project to a pure Vaadin 14 version later on.
Upgrade your project fully to Vaadin 14 (or higher, but that's the newest LTS version at the moment). The migration guide is from Vaadin 8 up, so you might need to consult the Vaadin 7 to Vaadin 8 migration guide as well for some features. This is a significantly bigger jump than from Vaadin 7 to Vaadin 8 since the whole client-side handling was rewritten after Vaadin 8, but gives you right away access to the newer bells and whistles, you'll have several more years of free support available, and upgrading from Vaadin 14 to the next LTS version in turn should be a smaller step again.
Related
We are using JDK 6 with Spring 3.2.8.RELEASE. Our application uses TLS, and the version of TLS needs to be upgraded to version 1.1 or higher. Unfortunately the JDK 6 (our build is 81) does not offer support for 1.1 or higher. So we are in need of upgrading JDK to 7. Question : Is Spring 3.2.8.RELEASE compatible to work with JDK 7?
Current code
SSLContext sslContext = SSLContext.getInstance("TLS");
I want to use
SSLContext sslContext = SSLContext.getInstance("TLSv1.1");
Would Spring version 3.2.8 RELEASE works good with Java 7 version? Or I need to upgrade Spring to 4.x release?
I apologize for posting an earlier answer and pulling it. It wasn't "wrong", but I wanted to find the definitive answer to your question. That answer is, I believe, provided in the Spring 3.1 release notes:
https://spring.io/blog/2011/12/13/spring-framework-3-1-goes-ga/
The spring team announces here full compatibility with Java 7. So you should be fine since you're one major point release ahead of that.
If you're thinking of jumping to Java 8, you should find this post helpful:
Java 8 Spring compatibility
I want to know which changes spring has in his 1.5.9 version, and in 2.0 version,
how I can find a list or something else?
You're confusing:
the Spring framework, in release 5.0.2 as of today, which is an application framework and inversion of control container for the Java platform
Spring Boot, a convention-over-configuration solution for creating stand-alone, production-grade Spring-based Applications that you can "just run", currently in release 1.5.9, with an impending 2.0.0rc1 release.
You can find the release notes here for release 1.5.9, and here for release 2.0.0.
What are the jar files I need to use spring expression language in my web app?
This web app itself is not based on Spring. I would like to use the 4.0.1 version. Is spring-expression-4.0.1.RELEASE.jar alone enough?
I assume you need the expression and the core jar. Try with expression only and add core if something still is missing.
And you should consider using 4.1 or even 4.2, 4.1 is available and has no higher requirements than 4.0. 4.2 is scheduled to be released in only a few weeks, so you could start with the already available RC2 and go to final very soon.
I've searched and couldn't find anything to suggest that Spring 4.0.0 is not fully backward compatible with Spring 3.x.
Is that indeed the case?
You should be safe if you have updated your third-party dependencies and updated any Spring deprecations in your project. Spring Framework project lead Juergen Hoeller writes in the blog Migrating from Spring Framework 3.2 to 4.0.1:
To a large degree, an upgrade from Spring Framework 3.2 (or earlier) to 4.0.1 should be as straightforward as a change of version numbers in your Maven POMs. Note that you may have to upgrade specific third-party dependencies to a recent enough version (e.g. Hibernate 3.6+, Quartz 1.8+, Jackson 1.8+, Tiles 2.2+)
Read the migration guide on GitHub for details.
I've prepared report on API changes for the Spring releases here: http://abi-laboratory.pro/java/tracker/timeline/spring-framework/
The report includes backward binary- (BC) and source-compatibility (SC) analysis results. The BC between 3.2.16 and 4.0.0 is estimated at 90.08% and SC is estimated at 88.70%.
The report is generated by the japi-compliance-checker tool.
...
There are few API they have removed in the new version. You would not have any surprise changes with the new version, there could be slight changes in the API. But, you have to watch the deprecated APIs which will be the candidate for removal in the forthcoming versions.
Look at this document , they have included few backward compatibility changes and removal of the APIs.
The backward compatibility for object-mapper option of the and components has beed removed.
But there is not much changes mentioned in the document.
It should be backward compatible. I recently watched http://oredev.org/2013/wed-fri-conference/spring-4-on-java-8 and recall Juergen Hoeller saying that they designed Spring 4.0 to be easy to upgrade to from 3.2 its around the 47 minute mark in the video.
I take that to mean that there should be no compatibility issues.
Typically any breaking changes or incompatibility would be noted in the documentation. As you can see there is some deprecated code but it looks to be backwards compatible.
I have an application deployed on WAS 6.1 (without future pack). This application contains a JAX-WS client for a JAX-WS Web Service. Is this architecture possible? Considering that WAS 6.1 uses JAVA 1.5?
I encountered a lot of problems...like missing jars, and incompatible java version.
Can anyone say to me which are the jax-ws jars I need?
We did this for a while with Axis 2 under WAS 6.1 without the Web Services Feature Pack. That is, we deployed Axis 2 jars in the web application's WEB-INF/lib. It did work, but had some performance and resource issues at the time. Thus, we decided to install the (free) Feature Pack, and that made everything work easier and better.
Also, though, don't forget that WebSphere 6.1 goes out of service this month.
As to the incompatible Java version from Java 1.5, JAX-WS can work with Java 1.5, but I have no idea whether your particular code needs Java 6.