
Explore the evolution of data formats from csv to json and see how protocol buffers deliver fully typed data, cross-language code generation, and compact binary payloads.
Build a solid foundation in protocol buffers through theory and mini exercises, then practice advanced concepts, serialization and deserialization, compare with JSON, XML, and CSV, and design messages and services.
Meet Clement, a software engineer and consultant guiding you through Protocol Buffers, gRPC adoption, and data serialization, with connections via LinkedIn, GitHub, and his website.
Deliver a quick, important message about course reviews and when to rate the course, noting the programming portion comes in part two.
Explore protocol buffers using proto three syntax, define a simple account message with id, name, and a validated boolean, and learn that a field comprises type, name, and tag.
Discover how Protocol Buffers skip unset fields during serialization to avoid payload overhead, while deserialized data fills those fields with default values.
Explore Protocol Buffers scalar types, from signed and unsigned integers to booleans, strings, and bytes, with their default values and fixed versus variable representations demonstrated in a sample account proto.
Explore how field tags drive protobuf serialization, why keep small tag numbers for the most populated fields, and how tag ranges and varint encoding affect payload and bandwidth.
Explore repeated fields in protocol buffers, enabling zero or more elements with a default empty list, demonstrated by adding a phones field to an account.
Define and use enums in protocol buffers, with the first tag as zero and the default value as the first element. Implement an eye color enum in an account proto.
Learn to use single-line and multi-line comments to document protobuf messages, such as marking a jpeg thumbnail and height in centimeters.
Explore solutions to the protobuf practice exercises by reviewing date, lat long, money, day of week, and person protos from the Google APIs repo.
Define multiple messages and enums in the same Protocol Buffers file, including references between messages and enums with values, and prepare for nested types in the next lecture.
Master nested types in proto files by defining messages and enums inside a parent message, such as message three and message four, and using these nested types to define fields.
Learn how to use imports in proto files to reference messages defined in other files, enabling cross-file types and seamless multi-file organization in your proto projects.
Define a package in a proto file and declare message six, then import package dot proto and reference message six with my dot package dot message six.
Define all messages in one proto file using proto3 syntax, modeling city, street, and building in a top-down order to show design impact and redundancy with address.
Define nested messages in protocol buffers by modeling city, street, and building using top-down and bottom-up approaches, and learn how fully qualified names access nested fields in an address structure.
Learn how to use imports in protocol buffers to share message definitions across city, street, building, and address protos, compile with protoc to generate C++ code.
Learn to organize protocol buffer definitions by creating packages, moving files into a dedicated imports package, and using fully qualified names to resolve cross-package references with protoc.
Install and validate the protobuf compiler, then use protoc to generate Java and Python code from a simple proto file, defining a uint32 id message.
Set up a Gradle project in IntelliJ, apply the protobuf plugin, configure protoc to 3.19.4, and generate Java sources from a dummy.proto file.
Learn how to instantiate a protobuf generated Java object by building a simple message with id, isSimple, name, and a repeated sampleList using add and addAll.
Define dummy and complex messages in proto3 with a uint32 id and string name, include a repeated dummy, generate Java code, and print the complex object.
Define a proto3 enum for eye color in Java, embed it in a message, generate Java code, and set and print enum values in your application.
Define a protobuf maps example with a string-to-id wrapper map, generate Java code, and demonstrate populating the map with put and putAll.
Use the oneof keyword in a proto three file to define a message with a oneof field that holds a string or uint32, and generate Java code.
Write a protobuf message to a file and read it back in Java using write to and read from utilities, with a simple message (id, name, is simple).
Learn how to serialize a protobuf message to Json and deserialize Json back to a message using Json format, printer, and parser, including repeated fields.
Learn java code generation options for proto by renaming the java package to com.example.options and enabling one class per file with java_multiple_files.
initialize the go module and verify the proto compiler by generating go code from proto files. create a proto directory, add dummy.proto with go_package, and run make to produce dummy.pb.go.
Learn to define a simple proto message in Go, generate pb.go, and instantiate it with id, is_simple, name, and a repeated list, then print the result.
Define two protobuf messages in golang: a dummy with id and name, and a complex containing a dummy field and a repeated dummy list, then generate and print complex object.
discover how to use the oneof keyword in protobufs with a Golang example. generate code from a proto file and print the id or the message, with error handling.
Define a protobuf map in Go by creating a map example that maps strings to id wrappers, generate code, and print the map contents.
Demonstrates writing a protobuf message to disk and reading it back by marshalling to bytes, persisting to a file, and unmarshalling to display the data.
Learn to serialize protobuf messages to json and deserialize them back in go using toJson and fromJson with proto json marshal and unmarshal.
Generate Python protocol buffer code by configuring a PyCharm project, setting up a virtual environment, creating a proto directory, writing dummy.proto, and running protoc to produce pb2 files.
Instantiate a simple protobuf message in python by defining a simple proto with id, is_simple, name, and a repeated sample_list, generate python code, and print the result.
Define a complex proto in Python by creating dummy and complex messages, including a repeated dummy field, generating code with the makefile, and constructing a complex object in main.py.
Show how to create a proto with an enum color, define a message using that enum in Python, and set the color field to green, comparing ordinal and named values.
Use the oneof keyword in proto3 to model a result that holds a message or an id, generate Python code, and show how a new field clears the old.
Learn to define a proto3 map from string to an id wrapper, generate Python code, and build a map with three entries, then print the resulting message.
Learn how to write a protobuf message to a binary file and read it back, using a simple main.py function, byte serialization, and type-based reconstruction before moving to json serialization.
Serialize a message to Json and deserialize from Json using google.protobuf.json_format in Python. Demonstrate indent, preserving proto names, and ignoring unknown fields during Json parsing.
Explore data evolution in Protocol Buffers by understanding backward and forward compatibility, default values, and schema changes that avoid breaking existing app versions.
Follow Protocol Buffers data evolution rules: never change tags, add new fields, reserve tags when removing fields, and note that changing int32 to int64 works.
Learn how to remove fields safely by reserving tag numbers and names to prevent misinterpretation, preserve compatibility, and avoid conflicts when a field like first name is removed.
Use the reserved keyword to reserve multiple field tags and names for compatibility; learn to reserve ranges and avoid mixing tags and names on one line.
Explore how default values enable forward and backward compatibility and prevent nulls, then distinguish missing from unset values and mitigate with non-meaningful defaults and conditional checks.
Protocol Buffers (protobuf) is a fundamental data serialization format that every Data Engineer should know about. It is leveraged by many top tech companies such as Google and enables micro-services to transfer data in a format that is safe and efficient.
In this course, we are going to explore in depth, with hands-on lectures, all the aspects of Protocol Buffers 3.
In just a few hours, you will know everything you need to know to create simple and complex .proto files, and write code in your Favourite Programming language such as Java, Python and Go. Protocol Buffers generates all the boilerplate code for you!
Stop using XML and JSON and start using a Data Format that will allow you to create the most efficient APIs.
Complete Guide to Protocol Buffers 3 is the best way to get a great overview of all the possibilities offered by Protocol Buffers
> Write simple and complex .proto files
> Practice Exercises to Confirm the learnings
> Leverage Imports and Packages appropriately
> Generate Code using `protoc`
> Code in Java, Go and Python with Protocol Buffers
> Learn about advanced Protocol Buffers concepts
Note: This course assumes you have some knowledge about Programming and JSON / XML
Section outline:
Protocol Buffers Course Introduction: Get an understand of the course objectives, how the course is structured, download the course code and get ready!
Protocol Buffers Basics I: Learn how to create your first messages using Scalar Types. Practice with 5 exercises
Protocol Buffers Basics II: Learn how to create complex messages, and organise your code in different files and packages. Practice with 4 exercises
Setting up Protoc Compiler: Setup the protoc compiler and learn how to generate code in any language
Java Programming with Protocol Buffers: Write your Protocol Buffers Data in Java
Golang Programming with Protocol Buffers: Write your Protocol Buffers Data in Golang
Python Programming with Protocol Buffers: Write your Protocol Buffers Data in Python
Data Evolution with Protobuf: Evolve your protocol buffers file in a safe way in order to add or remove fields without breaking previous code
Protocol Buffers Advanced: Advanced Types in Protocol Buffers as well as Options, Integer Types, and an introduction to RPC Services with gRPC
Instructor
My name is Clément Jean, and I'll be your instructor in this course. I teach about Protocol Buffers and gRPC with my focus always on helping my students improve their professional proficiencies. I am also the author of some of the most highly-rated & best-selling courses.
With development being a widely accepted and pursued career, I've decided it's time for students to properly learn about Protocol Buffers. So, let’s kick start the course! You are in good hands!
This Course Also Comes With:
Lifetime Access to All Future Updates
A responsive instructor in the Q&A Section
Links to interesting articles, and lots of good code to base your next template onto
Udemy Certificate of Completion Ready for Download
A 30 Day "No Questions Asked" Money Back Guarantee!
I hope to see you inside the course!