Servlet مقابل JAX-RS
استبدل كليشيهات HttpServlet المطوّلة بفئات موارد JAX-RS التصريحية.
مقارنة الكود
✕ Java EE
@WebServlet("/users")
public class UserServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req,
HttpServletResponse res)
throws ServletException, IOException {
String id = req.getParameter("id");
res.setContentType("application/json");
res.getWriter().write("{\"id\":\"" + id + "\"}");
}
}
✓ Jakarta EE 8+
@Path("/users")
public class UserResource {
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getUser(
@QueryParam("id") String id) {
return Response.ok(new User(id)).build();
}
}
هل ترى مشكلة في هذا الكود؟ أخبرنا.
لماذا يتفوق الأسلوب الحديث
توجيه تصريحي
التعليقات التوضيحية تُعرِّف طريقة HTTP والمسار ونوع المحتوى بدلاً من إيزاع if/else.
تسلسل تلقائي
أرجع POJOs مباشرةً؛ يُسلسلها وقت التشغيل إلى JSON أو XML بناءً على @Produces.
اختبار أسهل
فئات الموارد كائنات Java عادية قابلة للاختبار دون حاوية servlet.
الأسلوب القديم
HttpServlet
الأسلوب الحديث
مورد JAX-RS
منذ JDK
11
الصعوبة
متوسط
دعم JDK
Servlet مقابل JAX-RS
متاح
متاح على نطاق واسع منذ Jakarta EE 8 / Java 11
كيف يعمل
يتيح لك JAX-RS (Jakarta RESTful Web Services) كشف نقاط نهاية REST باستخدام تعليقات توضيحية بسيطة مثل @GET و @Path و @Produces. لا مزيد من التحليل اليدوي لمعاملات الطلب أو ضبط أنواع المحتوى في الاستجابة — يتعامل وقت التشغيل مع التسلسل والتوجيه تلقائياً.
توثيق ذو صلة