20 Ocak 2022 Perşembe

Jakarta Kullanımı

Neden Paket İsimleri Değişti?
Açıklaması şöyle. Eclipse Foundation teknolojyi Jakarta EE olarak yeniden markalaştırdı ama kod paketlerinin değişmesinin ana sebebi Oracle'ın javax paket ismini kullandırmak istememesi.
After Oracle turned the Java EE specs over to the Eclipse Foundation, they have since rebranded it as Jakarta EE. This includes servlets, JMS, JPA, and many others. What was once Java Messaging Service is now Jakarta Messaging Service.

And Jakarta EE 9 is the version where all these specs changes their package prefix from javax to jakarta. (Oracle wouldn’t grant Eclipse the javax prefix nor give them any sort of license).
Paket İsimlerini Değiştirmek
Eclipse Transformer kullanarak şöyle yaparız
java -jar org.eclipse.transformer.cli-0.4.0-SNAPSHOT-all.jar \ -i input_directory \ -o output_directory \ -x jakarta-renames.properties \ -t jakarta-direct.properties
1. Jakarta EE 8
Eclipse Foundation tarafından verilen ilk sürüm. Bu sürüm için iki tane dependency var. 

Birinci Kullanım
Açıklaması şöyle. Yani sadece bağımlılığı değiştirmek yeterli. Kodda paket isimler değişmiyor.
Jakarta EE8 was the first release after the Eclipse foundation overtook the project from Oracle. Nothing but the name has changed. Your existing Java EE8 projects will work out of the box. In your Maven dependencies, you can now use the new Jakarta EE8 platform reference.
Maven
Jakarta EE 8 için şu satırı dahil ederiz
<dependency>
<groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>8.0.1</version> <scope>provided</scope> </dependency>
Gradle
Şu satırı dahil ederiz
compileOnly 'javax:javaee-api:8.0.1'
İkinci Kullanım
Bu yeni bağımlılık ile kod içindeki paket isimleri artık javax.* yerine jakarta.* haline geliyor. Şöyle yaparız
<dependency>
<groupId>jakarta.platform</groupId> <artifactId>jakarta.jakartaee-api</artifactId> <version>8.0.0</version> <scope>provided</scope> </dependency>
2. Jakarta EE 9
Açıklaması şöyle. Yani kodda sadece namespace değişikliği gerekiyor
The goal of Jakarta EE 9 was the namespace change from javax.* to jakarta.*.
...
... Jakarta EE9 brings no special changes. Since the namespace change behind the scenes is very complex, this release was necessary for platform and library developers.  
Açıklaması şöyle. Benzer bir açıklama burada
By the way, most of the application servers will do the namespace migration for you during deployment. So as an application developer you can still use the javax.* namespaces, even if your target runtime will be Jakarta EE9. This means your ‘old’ application using the javax.* namespace will be running fine on newer Jakarta EE severs. 
Yani elimizde şöyle eski bir kod olsun. Bu kod sorunsuz çalışır
/* Jakarta EE8 */
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

@ApplicationPath("api")
public class BaseApplication extends Application {

}
Yani elimizde şöyle yeni bir kod olsun. Bu kod sorunsuz da çalışır
/* Jakarta EE9 */
import jakarta.ws.rs.ApplicationPath; import jakarta.ws.rs.core.Application; @ApplicationPath("api") public class BaseApplication extends Application { }
Eski kodlar Wildfly 26'ya kadar sorunsuz çalışacak. Açıklaması şöyle. Daha sonra her şeyin tamamen yeni isim alanına geçmesi gerekiyor. 
Applications using the jakarta.* namespace will only work on fully compatible Jakarta EE9 servers (e.g., wildfly-preview-26.0.0). Most of the official Jakarta EE servers are still on Jakarta EE 8. So from the perspective of an application developer, it currently makes no sense to switch to the new namespace. 

3. Jakarta EE 9.1
Açıklaması şöyle. Java 11 desteği geliyor
The Jakarta EE9.1 project is similar to Jakarta EE9 just an intermediate release. The difference between Jakarta EE 9 and 9.1 is the JDK 11 support.
Maven
Şu satırı dahil ederiz
<dependency>
  <groupId>jakarta.platform</groupId>
  <artifactId>jakarta.jakartaee-api</artifactId>
  <version>9.1.0</version>
  <scope>provided</scope>
</dependency>
Gradle
Şu satırı dahil ederiz
dependencies { providedCompile 'jakarta.platform:jakarta.jakartaee-api:9.1.0' }
4. Jakarta EE 10
Açıklaması şöyle
Jakarta Servlet (6.0)
Jakarta Server Pages (3.1)
Jakarta Expression Language (5.0)
Jakarta WebSocket (2.1)
Jakarta Authentication (3.0)
JAX-RS 3.1

Hiç yorum yok:

Yorum Gönder

Bean Validation @GroupSequence Anotasyonu

Örnek Elimizde şöyle bir kod olsun public class SampleRequest {   @NotNull   LocalDate startDate;   @NotNull   LocalDate endDate;   @AssertT...