Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [servlet-dev] Transitioning to Jakarta EE namespace

Mark,

I pretty much agree with you regarding the "done" nature of the current servlet API.  In fact I think we were kind of done at 3.1 (as Jetty has still not  released our 4.0 version and nobody has even asked for it!).

But I do think that there is demand and interest in new API and/or features - even a completely new API that could:
  • Remove all the cruft (no JSP, JSF etc. as favoured child of servlet container)
  • Remove all the old stuff (eg Enumerations)
  • Support micro deployments (eg web functions)
  • Perhaps reactive IO ( although I do like our IO paradigm :)
  • Asynchronous/background receipt of complex content (eg form params, multipart, json, xml).
  • Better support for IO interception - it is now impossible to wrap request/response objects to intercept IO because of the async behaviours (plus it was ugly way to do it anyway).
  • Better demarcation between headers/features that should be handled by the container vs those that should be handled by the application.
  • Sane URI mapping.
  • a security model that is usable by frameworks to provide modern extensible security 
  • Well define session semantics so we can all agree on what a distributed session is (even if this means only native types!!)
  • Use JPMS layers instead of an inverted/hacked classloader.
  • Better support for HTTP/2 & HTTP/3 variations of semantics (eg connection scoped attributes?)
  • Support fast start - no scanning for annotations every time a new cloud instance if started.
I can kind of see a path forward where we freeze our javax.* implementations (modulo security issues) and put all our effort into creating a new simple, modern, flexible HTTP API.     Once that is agreed, we can support backwards compatibility by porting our various javax implementations to run within an adaption layer on top of the new API (which could result in some interesting outcomes - eg running a jetty servlet container ontop of a netty jakarta.* server ).

Of course without the structure of a legacy API to guide us, we may be unable to come up with an agreed new API model, but I'd much rather burn cycles trying to do that than trying to work out how to byte code modify ancient javax servlets to run on new jakarta.servlet containers.








On Tue, 7 May 2019 at 15:42, Mark Thomas <markt@xxxxxxxxxx> wrote:
Thinking about this from a purely Servlet perspective.

The current API feels mostly done. There are some bits and pieces we
could clean up but most of the things on my TODO list for the existing
API are around clarifying behaviour for various edge cases - i.e.
changing the JavaDoc, not changing the code. Even for Cookies - an area
where I think there is a lot to do - a lot can be done with the existing
API.

Potential new features (reactive, QUIC, HTTP/3, ???) would almost
certainly be put into new packages. I think it makes little difference
if those packages are under jakarta.servlet.* rather than javax.servlet.*

Existing Java EE 8 implementations are going to be supported for as long
as it remains viable to do so. In terms of open source implementations,
I can see that support lasting for at least the next decade.

My conclusion from these musing is that significant new features should
go into new jakarta.servlet.* packages. The open question is what do we
do with the existing API?

Leave it where it is:
Pros:
- Upgrade from Java EE 8 to Jakarta EE 9 is seamless.
Cons:
- We have to live with the API as is.
- Our hands are tied in terms of making any changes to javax.servlet.*
  classes. We could probably handle this by creating new
  jakarta.servlet.* classes that extended javax.servlet.* where
  necessary but that could get messy.

Move it to jakarta.servlet.*
Pros:
- We can clean up the API.
- We have more flexibility to change the existing API.
Cons:
- Upgrade from Java EE 8 to Jakarta EE 9 will require code changes.
  Much of it will be copy/paste but there may be some more subtle
  changes required depending on how much we clean up.


I'm currently undecided on the best way forward. The opportunity to
clean up the API is tempting but I'm worried about the cost of migration
to users. I would be good to hear from some users on this.

Mark



On 07/05/2019 10:52, Greg Wilkins wrote:
>
> All,
>
> I draw your attention to the discussions regarding the potential need to
> transition for javax.* namespace to the jakarta.* namespace:
>
>  [jakartaee-platform-dev] Transitioning Jakarta EE to the jakarta namespace
>  - https://www.eclipse.org/lists/jakartaee-platform-dev/msg00029.html
>
> This is an incredibly significant matter that may well shape our
> development efforts for years to come.  It is extremely important that
> we come up with a reasonable approach to overcome this difficult issue -
> both from a servlet point of view and as the wider jakarta EE community.
>
> The EE ramification will be discussed
> in  https://accounts.eclipse.org/mailing-list/jakartaee-platform-dev and
> all are welcome to participate.  However, I believe that in parallel
> (and to correctly inform the EE discussion),  we need to discuss the
> servlet specific ramifications, opportunities, evolution, revolutions,
> etc.    I think this is the correct forum to do this and I invite input
> and discussion here.    
>
> I expect that there will be many relevant discussions external to this
> forum and the platform-dev one: blogs, articles, vendor lists, other
> forums etc.   I plan to write my own thoughts down in a blog soon.   
>  Thus can we make an effort to link such external discussion here.
>
> Ultimately I expect that an email forum thread will be insufficient to
> capture all the issues, concerns, solutions, alternatives, etc. and that
> we may eventually need to use an issue tracker or similar, but let's
> start with a thread to at least get the ideas circulating.
>
>
>
> -- 
> Greg Wilkins <gregw@xxxxxxxxxxx <mailto:gregw@xxxxxxxxxxx>> CTO
> http://webtide.com
>
> _______________________________________________
> servlet-dev mailing list
> servlet-dev@xxxxxxxxxxx
> To change your delivery options, retrieve your password, or unsubscribe from this list, visit
> https://www.eclipse.org/mailman/listinfo/servlet-dev
>

_______________________________________________
servlet-dev mailing list
servlet-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/servlet-dev


--

Back to the top