1. Kito D. Mann (@kito99) https://kitomann.com
1.1. https://virtua.tech Principal Consultant at Virtua: Consulting, training, mentoring on web dev and back-end Java
1.2. Java Champion
1.3. Participated in several Java Community Process expert groups (including CDI, JSF, and Portlets)
1.4. Jakarta EE Guardian Leadership Council Member
1.5. Google Developer Expert on Web Technologies
1.6. Co-host of Stackd Podcast (https://stackdpodcast.com)
1.7. Internationally recognized speaker
1.8. Founder of https://SpeakerTrax.com
2. You
3. What is GraphQL?
3.1. Alternate approach to client/server communication
3.2. Simple example
3.3. Does not use REST
3.4. Origins
3.4.1. Created by Facebook in 2012
3.4.2. Open sourced in 2015
3.4.3. Started in 2017
3.4.4. Used by many large companies
4. Why GraphQL?
4.1. Drawbacks of REST
4.1.1. Endpoint decides what data is returned
4.1.2. Data can be split amongst several calls
4.1.3. No specific data format
4.1.3.1. Layout of the data is up to the endpoint
4.1.4. No push standard
4.2. Benefits of GraphQL
4.2.1. Client decides what data it wants
4.2.1.1. Server decides where to get it
4.2.1.1.1. Well suited for BFFs
4.2.2. Single consolidated, dynamic endpoint
4.2.3. Subscriptions
4.2.4. Defined data format
4.2.4.1. Typed schemas
5. Why not GraphQL?
5.1. Drawbacks of GraphQL
5.1.1. Additional overhead
5.1.1.1. Defined data format
5.1.1.1.1. Typed schemas
5.1.1.2. Client needs to know what data it wants
5.1.2. It's not REST
5.1.3. More "magic"
5.2. Benefits of REST
5.2.1. Simpler, easier to get started
5.2.2. Better suited for read-only or low data APIs
5.2.3. It's REST
5.2.4. No specific data format
6. Demo
7. Schemas
7.1. Type-safe contract between client and server
7.2. Client can only request data defined in the schema
7.3. Versioning handled through deprecation
7.4. Demo
7.5. Design approaches
7.5.1. Schema-first
7.5.2. Code-first
7.5.3. Make this decision up front
8. Subscriptions
8.1. Allows server to push changes to client
8.2. Transport independent (web socket is most common)
8.3. Demo
9. Implementations
9.1. Client-side
9.1.1. Apollo Client
9.1.2. apollo-elements
9.2. Server-side
9.2.1. Java
9.2.1.1. GraphQL Java Tools
9.2.1.2. DGS Framework (Domain Graph Service)
9.2.1.2.1. Supports Federation
9.2.1.3. MicroProfile GraphQL
9.2.1.4. Spring GraphQL
9.2.2. JavaScript
9.2.2.1. Apollo Server (Node)
9.2.2.1.1. Apollo Federation
9.2.2.2. GraphQL Yoga
9.3. Demo
9.4. Tools
9.5. Databases
9.6. Services
10. Resources
10.1. GraphQL Site
10.2. Schema-First GraphQL: The Road Less Travelled
10.3. The Problems of "Schema-First" GraphQL Server Development | Prisma
10.4. GraphQL Landscape
10.5. Altair GraphQL Client
10.6. How to GraphQL Tutorial
10.7. react-apollo example
10.8. MicroProfile GraphQL Example
10.8.1. MicroPropfile GraphQL Experimental Features