JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support...
Transcript of JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support...
![Page 1: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/1.jpg)
JSR 367 (JSON Binding) Review
September 15 2016
Dmitry Kornilov
![Page 2: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/2.jpg)
2
Agenda
• Goals• Information to be gathered• Next Steps• Issues• Q&A
![Page 3: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/3.jpg)
3
Goals
![Page 4: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/4.jpg)
4
Goals (1/2)
• Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.
• JSON-related specifications will be surveyed to determine their relationship to JSON-Binding.
• Maintain consistency with JAXB and other Java EE and SE APIs where appropriate.
• Define default mapping of Java classes and instances to JSON document counterparts.
• Allow customization of the default mapping definition.
![Page 5: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/5.jpg)
5
Goals (2/2)
• Default use of the APIs should not require prior knowledge of the JSON document format and specification.
• Define or enable integration with JSR 374: Java API for JSON Processing (JSON-P) 1.1.
![Page 6: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/6.jpg)
6
Information to be gathered
![Page 7: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/7.jpg)
7
About this JSR
JSON-B is standard binding layer for converting Java objects to/from JSON documents
publicclassCustomer{publicintid =1;publicStringfirstName =“John”;publicStringlastName =“Doe”;….
}
{"id":1,"firstName":"John","lastName":"Doe",
}
Java JSON
![Page 8: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/8.jpg)
8
About this JSR
Usage in Other Java EE Frameworks
JAX-RS
Objects
XML
JSON
![Page 9: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/9.jpg)
9
Introduction
• Supports Java EE 7• Targeted for inclusion in Java EE 8• One of the core parts of Java EE 9
![Page 10: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/10.jpg)
10
Business/marketing/ecosystem justification
![Page 11: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/11.jpg)
11
Business/marketing/ecosystem justification
• Many services are offering data via JSON messages that Java developers need to interact with as Java objects.
• There is a need in other frameworks like JAX-RS to convert objects to/from JSON
• JAXB analog for JSON• Standardize current technology
![Page 12: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/12.jpg)
12
History
• 26 Aug 2014 – JSR Submitted• 23 Sep 2014 – Expert Group Formation• 20 Aug 2015 – Early Draft Review• 26 July 2016 – Public Draft Ballot
![Page 13: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/13.jpg)
13
Technical scope and features
Default Mapping– Basic Types– Specific Types– Dates– Classes– Collections/Arrays– Enumerations– JSON-P types
Customized Mapping– Property names– Property order– Ignoring properties– Null handling– Custom instantiation– Custom visibility– Date/Number Formats– Binary Handling– Adapters– Serializers/Deserializers
![Page 14: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/14.jpg)
14
Technical scope and features
• Annotation based customizations • Easy runtime customizations using JsonbBuilder• Full support of generic types• Integration with JSON-P• I-JSON support
![Page 15: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/15.jpg)
15
The Expert Group
• Dmitry Kornilov (Oracle)• Przemyslaw Bielicki• Eugen Cepoi• Martin Vojtek (Datlowe)• Rick Curtis (IBM)• Nathan Rauh (IBM)• Roman Grigoriadi (Oracle)
• Alexander Salvanos• Hendrik Saly• Otavio Santana• Inderjeet Singh• Kyung Koo Yoon (TmaxSoft)• Romain Manni-Bucau (Tomitribe)• Gregor Zurowski
![Page 16: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/16.jpg)
16
The Expert Group
• Main communication channel is experts mailing list• If needed we setup a videoconference using Zoom,
Skype or Hangouts• Face to face conversations
![Page 17: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/17.jpg)
17
Other deliverables
• JSONB web site (jsonb.java.net)• Samples is a part of the spec• Sample projects on GitHub
![Page 18: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/18.jpg)
18
Publicity
• JavaOne 2015• EclipseCon 2016 NA• JavaOne 2016
![Page 19: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/19.jpg)
19
Collaboration with other community groups
• Presentation for CZ JUG• Presentation for Bentonville JUG• Faso JUG Adopts JSR 367
– https://github.com/pandaconstantin/adopjsrfasojug• First look on JSR-367 (Turkish)
– https://blog.kodcu.com/2016/09/json-binding-jsr-367-incelemesi/
• JSONB test-drive using JAX-RS– https://abhirockzz.wordpress.com/2016/08/24/json-b-test-
drive-using-jax-rs/
![Page 20: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/20.jpg)
20
IP flow
• Spec, RI and TCK licenses:– https://www.jcp.org/en/jsr/detail?id=367
• Code contributions from non JCP members:– Accepted on GitHub or Eclipse.org– Reviewed and merged– We didn't have any yet
• Terms of Use of our collaboration tools:– https://www.java.net/javanet-web-site-terms-use– https://help.github.com/articles/github-terms-of-service
• No legal issues so far
![Page 21: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/21.jpg)
21
RI and TCK development
• RI is developed as an open-source project– http://git.eclipse.org/gitroot/eclipselink/eclipselink.runtime.git
• Binary download– https://oss.sonatype.org/content/repositories/snapshots/org/ecl
ipse/persistence/jsonb-ri/1.0-SNAPSHOT/• Main committers:
– Roman Grigoriadi (Oracle)– Dmitry Kornilov (Oracle)– David Kral (Oracle)
• TCK development is not started yet
![Page 22: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/22.jpg)
22
Participation and transparency
• JCP.org page– https://www.jcp.org/en/jsr/detail?id=367
• Specification project page– https://jsonb-spec.java.net
![Page 23: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/23.jpg)
23
Adopt-a-JSR
• We are participating in Adopt-a-JSR program– Presentation for CZ JUG– Presentation for Bentonville JUG– Faso JUG Adopts JSR 367• https://github.com/pandaconstantin/adopjsrfasojug
• Where is no contribution to the project received
![Page 24: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/24.jpg)
24
Mailing lists or forums
• Mailing lists:– Experts, Users, Issues– https://java.net/projects/jsonb-spec/lists
• Total number of messages: 562• Average per Month: 25.5
![Page 25: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/25.jpg)
25
Mailing lists or forums
0
20
40
60
80
100
120
Mailinglistsmessages
Experts Users
![Page 26: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/26.jpg)
26
Mailing lists or forums
100
317
145
Emailsinmailinglistsbytype
SpecLead Experts Users
![Page 27: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/27.jpg)
27
Issue tracker
• http://java.net/jira/browse/JSONB_SPEC
11
31
Issuesbystatus
Open Closed
![Page 28: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/28.jpg)
28
Next Steps
![Page 29: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/29.jpg)
29
Schedule
StartTCKQ42016
ProposedFinalDraftQ12017
FinalReleaseQ22017
![Page 30: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/30.jpg)
30
Next Steps
• RI– Performance testing – Performance comparison – Performance optimization – Test on real life use cases
• TCK• Evangelism
– Samples, guides, manuals– Blog articles– Conferences
![Page 31: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/31.jpg)
31
Next Steps
• JSONB 1.1– Integration with other Java EE frameworks (JAX-RS, JPA)– JSON Pointer– Partial Mapping
![Page 32: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/32.jpg)
32
Issues
![Page 33: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/33.jpg)
33
Issues
• Integration with JSON-P• Resources for TCK
![Page 34: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/34.jpg)
34
Questions?
![Page 35: JSR 367 (JSON Binding) Review - Java Community Process · 2016-10-17 · 4 Goals (1/2) • Support binding (serialization and deserialization) for all RFC 7159-compatible JSON documents.](https://reader030.fdocuments.us/reader030/viewer/2022041106/5f0943827e708231d425fcf8/html5/thumbnails/35.jpg)
Thank You!
http://jcp.orgThank you!
http://jcp.org