Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat...

29

Transcript of Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat...

Page 1: Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member
Page 2: Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member

2 © 2014 Pivotal Software, Inc. All rights reserved. 2 © 2014 Pivotal Software, Inc. All rights reserved.

Apache Tomcat 9

Early Preview

Mark Thomas, 18 November 2014

Page 3: Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member

3 © 2014 Pivotal Software, Inc. All rights reserved.

Introduction

Apache Tomcat committer since December 2003 – [email protected]

Tomcat 8 release manager

Member of the Servlet, WebSocket and EL expert groups

Consultant Software Engineer @ Pivotal

Currently focused on Apache Tomcat 9

Page 4: Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member

4 © 2014 Pivotal Software, Inc. All rights reserved.

Agenda

Specification mandated new features

Tomcat specific new features

Tomcat features removed

Internal changes

Page 5: Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member

5 © 2014 Pivotal Software, Inc. All rights reserved.

Specification changes

Page 6: Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member

6 © 2014 Pivotal Software, Inc. All rights reserved.

Specifications

JavaEE 8 – Java SE 8

Servlet 4.0

WebSocket 2.0?

EL 3.1?

JSP 2.4?

Page 7: Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member

7 © 2014 Pivotal Software, Inc. All rights reserved.

JavaEE 8

Specifications

Key elements – HTML 5.0

– HTTP 2.0

– Simplification

– Better integration for managed beans

– Better infrastructure for the cloud

Page 8: Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member

8 © 2014 Pivotal Software, Inc. All rights reserved.

Servlet 4.0

Specifications

Work is starting

HTTP 2.0 – a.k.a. SPDY

HTTP 2.0 closest SPDY v4

Tomcat has an initial SPDY v2 implementation – Most browsers have dropped SPDY v2 support

Page 9: Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member

9 © 2014 Pivotal Software, Inc. All rights reserved.

WebSocket 2.0

Specifications

Work has not started

Assuming 2.0 – Could be 1.2

Standardize extension support – Compression

– Multiplexing

Page 10: Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member

10 © 2014 Pivotal Software, Inc. All rights reserved.

EL 3.1

Specifications

Work has not started

Nothing obvious to do here

Java 8 lambda alignment?

Most issues opened against UEL are implementation bugs

Expect minor changes and clarifications

Page 11: Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member

11 © 2014 Pivotal Software, Inc. All rights reserved.

JSP 2.4

Specifications

There is no JSP expert group

Just an other maintenance release

Issues to resolve with EL 3.0 and JSPs – Imports (definition and resolution)

Page 12: Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member

12 © 2014 Pivotal Software, Inc. All rights reserved.

Other

Specifications

Tomcat 9 isn’t going to implement the web profile – Lack of demand

– TomEE

JASPIC – Very little demand

– There are benefits to implementing it

– In the nice to have category

Page 13: Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member

13 © 2014 Pivotal Software, Inc. All rights reserved.

Tomcat New Features

Page 14: Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member

14 © 2014 Pivotal Software, Inc. All rights reserved.

Tomcat New Features

Server Name Indication (SNI) support – All HTTPS connectors

Other possibilities – HTTP upgrade support for AJP

Suggestions welcome – Suggestions with patches are even better ;)

Page 15: Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member

15 © 2014 Pivotal Software, Inc. All rights reserved.

Removed Features

Page 16: Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member

16 © 2014 Pivotal Software, Inc. All rights reserved.

BIO HTTP and BIO AJP connectors

Removed Features

Both WebSocket and Servlet 3.1 require non-blocking IO

BIO connectors currently pretend to be non-blocking – Creates complexity

– No scalability benefits

– Opportunity for things to break

Therefore decided to remove them

Page 17: Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member

17 © 2014 Pivotal Software, Inc. All rights reserved.

BIO HTTP and BIO AJP connectors

Removed Features

NIO implementation remains the default – HTTP and AJP

NIO2 introduced in Tomcat 8

APR/native still available – Requires native library

Page 18: Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member

18 © 2014 Pivotal Software, Inc. All rights reserved.

Comet

Removed Features

Proprietary interface for asynchronous I/O

Users are moving (have moved) to WebSocket

Adds complexity to all the connectors

Therefore decided to remove it

Page 19: Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member

19 © 2014 Pivotal Software, Inc. All rights reserved.

Internal Changes

Page 20: Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member

20 © 2014 Pivotal Software, Inc. All rights reserved.

Connectors

Internal Changes

HTTP 2.0 support is going to add complexity

Connectors are already complex

Connector code is fragile in some areas

Aim to clean the code up before starting on HTTP 2.0

Page 21: Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member

21 © 2014 Pivotal Software, Inc. All rights reserved.

Connectors

Internal Changes

Removed – BIO

– Comet

Implementation specific per connector code – Move to Endpoint

Implementation specific per connection code – Move to SocketWrapper

Page 22: Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member

22 © 2014 Pivotal Software, Inc. All rights reserved.

Connectors

Internal Changes

Reduce duplication – HTTP upgrade reduced to 3 classes from 12

– Removed ~400 lines (of ~120,000)

Similar refactoring possible for HTTP and AJP – Similar reductions in numbers of classes

– Greater reduction in lines of code

Page 23: Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member

23 © 2014 Pivotal Software, Inc. All rights reserved.

WebSocket

Internal Changes

Refactor I/O implementation – Direct to Tomcat’s I/O layer

– Not via Servlet 3.1 non-blocking API

Simpler

Faster

Extension support likely to require refactoring

Page 24: Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member

24 © 2014 Pivotal Software, Inc. All rights reserved.

Other

Internal Changes

Remove use of system properties for configuration – Move to per Context / Host / Server / Connector

– May keep the system property for one version as a default

Make RFC 6265 CookieProcessor the default – Note UTF-8 extension

Page 25: Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member

25 © 2014 Pivotal Software, Inc. All rights reserved.

Get Involved

Page 26: Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member

26 © 2014 Pivotal Software, Inc. All rights reserved.

Get Involved

Ask questions – [email protected]

Report bugs – https://issues.apache.org/bugzilla

Provide patches – https://issues.apache.org/bugzilla

– GitHub pull request

Page 27: Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member

27 © 2014 Pivotal Software, Inc. All rights reserved.

Get Involved

Development – https://svn.apache.org/repos/asf/tomcat/trunk (9.0.x)

[email protected]

Update the wiki – https://wiki.apache.org/tomcat

You don’t need to be an expert

Documentation needs patches too

Page 28: Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member

28 © 2014 Pivotal Software, Inc. All rights reserved.

Questions

Page 29: Apache Tomcat 9home.apache.org/~markt/presentations/2014-11-18-Tomcat-9-early-p… · Apache Tomcat committer since December 2003 –markt@apache.org Tomcat 8 release manager Member