CINXE.COM

Building Java Microservices with gRPC Online Class | LinkedIn Learning, formerly Lynda.com

<!DOCTYPE html> <html lang="en"> <head> <meta name="pageKey" content="d_learning_course_guest"> <!----><!----> <meta name="locale" content="en_US"> <meta id="config" data-app-version="2.0.2217" data-call-tree-id="AAYn2l9z2ctq4fYWFnENBg==" data-multiproduct-name="learning-guest-frontend" data-service-name="learning-guest-frontend" data-browser-id="88059003-3762-46a7-81d8-80709f013241" data-enable-page-view-heartbeat-tracking data-page-instance="urn:li:page:learning_course_guest;y3rPlPQ6Qf+SxddNTavTew==" data-disable-jsbeacon-pagekey-suffix="false" data-member-id="0"> <link rel="canonical" href="https://www.linkedin.com/learning/building-java-microservices-with-grpc"> <!----><!----> <!----> <!----> <!----> <link rel="manifest" href="/homepage-guest/manifest.json" crossorigin="use-credentials"> <!----> <script> function getDfd() {let yFn,nFn;const p=new Promise(function(y, n){yFn=y;nFn=n;});p.resolve=yFn;p.reject=nFn;return p;} window.lazyloader = getDfd(); window.tracking = getDfd(); window.impressionTracking = getDfd(); window.ingraphTracking = getDfd(); window.appDetection = getDfd(); window.pemTracking = getDfd(); </script> <!----> <link rel="icon" href="https://static.licdn.com/aero-v1/sc/h/444zstxv7s91nepfm5et6ofge"> <title>Building Java Microservices with gRPC Online Class | LinkedIn Learning, formerly Lynda.com</title> <meta name="robots" content="noarchive, max-image-preview:large"> <meta name="description" content="This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices."> <meta property="og:site_name" content="LinkedIn"> <meta name="twitter:site" content="@LI_Learning"> <meta name="twitter:card" content="summary"> <meta name="litmsProfileName" content="learning-guest-frontend"> <meta property="og:title" content="Building Java Microservices with gRPC Online Class | LinkedIn Learning, formerly Lynda.com"> <meta name="twitter:title" content="Building Java Microservices with gRPC Online Class | LinkedIn Learning, formerly Lynda.com"> <meta property="og:description" content="This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices."> <meta name="twitter:description" content="This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices."> <meta property="og:image" content="https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&amp;v=beta&amp;t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw"> <meta name="twitter:image" content="https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&amp;v=beta&amp;t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw"> <!----> <meta property="og:url" content="https://www.linkedin.com/learning/building-java-microservices-with-grpc"> <meta property="og:type" content="website"> <meta name="clientSideIngraphs" content="1" data-gauge-metric-endpoint="/learning-guest/api/ingraphs/gauge" data-counter-metric-endpoint="/learning-guest/api/ingraphs/counter"> <link rel="stylesheet" href="https://static.licdn.com/aero-v1/sc/h/ccepec31u8riooiwchbtig8m0"> <script type="application/ld+json"> {"@context":"http://schema.org/","@type":"Course","provider":{"@type":"Organization","name":"LinkedIn Learning","url":"https://www.linkedin.com/learning/"},"publisher":{"@type":"Organization","name":"LinkedIn Learning","url":"https://www.linkedin.com/learning/"},"hasCourseInstance":{"@type":"CourseInstance","courseMode":"online","courseWorkload":"PT2H30M19S","instructor":[{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"}]},"inLanguage":"en","name":"Building Java Microservices with gRPC","offers":[{"@type":"Offer","category":"Subscription"},{"@type":"Offer","category":"Paid","price":"299.99","priceCurrency":"HKD"}],"description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","image":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","creator":[{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"}],"author":[{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"}],"dateCreated":"2021-04-29","datePublished":"2021-04-29","thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","timeRequired":"PT2H30M19S","totalHistoricalEnrollment":22427,"url":"https://www.linkedin.com/learning/building-java-microservices-with-grpc","about":[{"@type":"Thing","url":"https://www.linkedin.com/learning/search?keywords=gRPC","name":"gRPC"},{"@type":"Thing","url":"https://www.linkedin.com/learning/search?keywords=Microservices","name":"Microservices"},{"@type":"Thing","url":"https://www.linkedin.com/learning/topics/java","name":"Java"}],"hasPart":[[{"@type":"VideoObject","name":"Microservices with gRPC - Introduction","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT39S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":false,"isAccessibleForFree":true,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/microservices-with-grpc"},{"@type":"VideoObject","name":"What you should know - Introduction","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT43S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":false,"isAccessibleForFree":true,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/what-you-should-know"}],[{"@type":"VideoObject","name":"Inter-service communication - 1. Introduction to gRPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT5M57S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":false,"isAccessibleForFree":true,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/inter-service-communication"},{"@type":"VideoObject","name":"gRPC framework overview - 1. Introduction to gRPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT35S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":false,"isAccessibleForFree":true,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/grpc-framework-overview"},{"@type":"VideoObject","name":"gRPC framework features - 1. Introduction to gRPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT3M45S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/grpc-framework-features"},{"@type":"VideoObject","name":"gRPC foundations - 1. Introduction to gRPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT55S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/grpc-foundations"},{"@type":"VideoObject","name":"HTTP/1 problems - 1. Introduction to gRPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT2M16S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/http-1-problems"},{"@type":"VideoObject","name":"How is HTTP/2 better? - 1. Introduction to gRPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT3M8S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/how-is-http-2-better"},{"@type":"VideoObject","name":"Understand protocol buffers - 1. Introduction to gRPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT1M58S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/understand-protocol-buffers"},{"@type":"VideoObject","name":"Steps to develop a gRPC service - 1. Introduction to gRPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT1M22S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/steps-to-develop-a-grpc-service"}],[{"@type":"VideoObject","name":"Using protocol buffers - 2. Building Blocks of gRPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT2M33S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":false,"isAccessibleForFree":true,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/using-protocol-buffers"},{"@type":"VideoObject","name":"Using the gRPC API: Download utilities - 2. Building Blocks of gRPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT3M2S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/using-the-grpc-api-download-utilities"},{"@type":"VideoObject","name":"Service definition using protobuffs - 2. Building Blocks of gRPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT7M14S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/service-definition-using-protobuffs"},{"@type":"VideoObject","name":"Generate stubs using protoc - 2. Building Blocks of gRPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT7M35S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/generate-stubs-using-protoc"},{"@type":"VideoObject","name":"Generated classes walk-through - 2. Building Blocks of gRPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT3M4S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/generated-classes-walk-through"},{"@type":"VideoObject","name":"Metadata and channels - 2. Building Blocks of gRPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT1M55S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":false,"isAccessibleForFree":true,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/metadata-and-channels"},{"@type":"VideoObject","name":"Types of gRPC calls - 2. Building Blocks of gRPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT3M24S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/types-of-grpc-calls"}],[{"@type":"VideoObject","name":"Overview of order management services built in the course - 3. Build User Service Using RPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT4M51S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/overview-of-order-management-services-built-in-the-course"},{"@type":"VideoObject","name":"Create a maven-gRPC project - 3. Build User Service Using RPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT4M21S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/create-a-maven-grpc-project"},{"@type":"VideoObject","name":"Define user.proto and generate service stubs - 3. Build User Service Using RPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT4M42S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/define-user-proto-and-generate-service-stubs"},{"@type":"VideoObject","name":"Database code setup - 3. Build User Service Using RPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT4M27S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/database-code-setup"},{"@type":"VideoObject","name":"Add database method to get user details - 3. Build User Service Using RPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT7M37S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/add-database-method-to-get-user-details"},{"@type":"VideoObject","name":"Implement service stub - 3. Build User Service Using RPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT7M30S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/implement-service-stub"},{"@type":"VideoObject","name":"Write code to host the user service - 3. Build User Service Using RPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT8M55S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/write-code-to-host-the-user-service"},{"@type":"VideoObject","name":"Test the user service - 3. Build User Service Using RPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT6M13S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/test-the-user-service"}],[{"@type":"VideoObject","name":"Define order.proto and generate stubs - 4. Build Order Management Service Using gRPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT6M10S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/define-order-proto-and-generate-stubs"},{"@type":"VideoObject","name":"Add database method to get orders - 4. Build Order Management Service Using gRPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT8M17S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/add-database-method-to-get-orders"},{"@type":"VideoObject","name":"Add service method to get order details - 4. Build Order Management Service Using gRPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT6M47S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/add-service-method-to-get-order-details"},{"@type":"VideoObject","name":"Write code to host order service - 4. Build Order Management Service Using gRPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT3M48S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/write-code-to-host-order-service"},{"@type":"VideoObject","name":"Test the order service using the client - 4. Build Order Management Service Using gRPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT2M57S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/test-the-order-service-using-the-client"},{"@type":"VideoObject","name":"Recap to connect user and order services - 4. Build Order Management Service Using gRPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT1M50S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/recap-to-connect-user-and-order-services"},{"@type":"VideoObject","name":"Write a client to call order service - 4. Build Order Management Service Using gRPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT5M14S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/write-a-client-to-call-order-service"},{"@type":"VideoObject","name":"Call order client from user service - 4. Build Order Management Service Using gRPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT7M44S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/call-order-client-from-user-service"},{"@type":"VideoObject","name":"Test the full flow of order management - 4. Build Order Management Service Using gRPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT6M43S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/test-the-full-flow-of-order-management"},{"@type":"VideoObject","name":"Challenge: Implement add-to-cart use case - 4. Build Order Management Service Using gRPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT1M33S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/challenge-implement-add-to-cart-use-case"}],[{"@type":"VideoObject","name":"Building gRPC microservices in Java: Advanced concepts - Conclusion","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT35S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":true,"isAccessibleForFree":false,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/building-grpc-microservices-in-java-advanced-concepts"}]],"syllabusSections":[{"@type":"Syllabus","name":"Microservices with gRPC","timeRequired":"PT39S","description":"gRPC is a framework that works with HTTP/2 protocol and helps build scalable microservices. In this course, explore the fundamentals and features of gRPC, work with protocol buffers, set up a gRPC project, and build a couple of microservices that interact with each other."},{"@type":"Syllabus","name":"What you should know","timeRequired":"PT43S","description":"In this video, get an overview of what knowledge you should bring with you."},{"@type":"Syllabus","name":"Inter-service communication","timeRequired":"PT5M57S","description":"REST, RPC, and SOAP calls are common today in microservices development. In this video, get a quick recap of inter-service communication and how it has evolved over the years. This can further explain why gRPC is preferred over REST services."},{"@type":"Syllabus","name":"gRPC framework overview","timeRequired":"PT35S","description":"In this video, discover what gRPC is, its inception, and its features."},{"@type":"Syllabus","name":"gRPC framework features","timeRequired":"PT3M45S","description":"Understanding the gRPC framework is important so that you know of its advantages and can start navigating around it. This video explains the features of gRPC as well as the disadvantages of being aware of where it may not be feasible to implement."},{"@type":"Syllabus","name":"gRPC foundations","timeRequired":"PT55S","description":"In this video, get to know the strong foundation blocks of gRPC. This is useful throughout the rest of the course and also on your further learning journey of gRPC."},{"@type":"Syllabus","name":"HTTP/1 problems","timeRequired":"PT2M16S","description":"gRPC operates over the HTTP/2 protocol. In this video, recap the problems with HTTP/1 protocol to understand later how HTTP/2 solves those problems."},{"@type":"Syllabus","name":"How is HTTP/2 better?","timeRequired":"PT3M8S","description":"In this video, discover how HTTP/2 overcomes all limitations of HTTP/1 protocol."},{"@type":"Syllabus","name":"Understand protocol buffers","timeRequired":"PT1M58S","description":"When microservices operate, they need data transmitted in and out of them. In this video, get a quick understanding of how protocol buffers are used in gRPC to serialize or deserialize data."},{"@type":"Syllabus","name":"Steps to develop a gRPC service","timeRequired":"PT1M22S"},{"@type":"Syllabus","name":"Using protocol buffers","timeRequired":"PT2M33S","description":"In this video, discover what you need to do to get started with protocol buffers to define your service, generate stubs, and use them."},{"@type":"Syllabus","name":"Using the gRPC API: Download utilities","timeRequired":"PT3M2S","description":"gRPC framework generates stubs for both client and server using a service definition file. You then have to get hold of these stubs for the service implementation. In this video, learn how the IDL definition helps autogenerate code artifacts for your services."},{"@type":"Syllabus","name":"Service definition using protobuffs","timeRequired":"PT7M14S","description":"Learn how any microservice is defined in gRPC. This is to understand the interface definition language used in gRPC to get started with the service development."},{"@type":"Syllabus","name":"Generate stubs using protoc","timeRequired":"PT7M35S","description":"gRPC framework generates stubs for both client and server using a service definition file. You then have to get hold of these stubs for the service implementation. In this video, learn how the protocol compiler helps you to generate stubs."},{"@type":"Syllabus","name":"Generated classes walk-through","timeRequired":"PT3M4S","description":"In this video, get to know briefly about the generated classes resulting that the protoc compiler builds with your service definition file."},{"@type":"Syllabus","name":"Metadata and channels","timeRequired":"PT1M55S","description":"In this video, explore the useful information of how gRPC services communicate over the wire. It is good to know the lower-level semantics of how gRPC service functions. This is useful for advanced topics, like authentication."},{"@type":"Syllabus","name":"Types of gRPC calls","timeRequired":"PT3M24S","description":"In this video, learn about the types of asynchronous gRPC calls supported by the framework. This can help to know the types of asynchronous calls and know when to use what."},{"@type":"Syllabus","name":"Overview of order management services built in the course","timeRequired":"PT4M51S","description":"In this video, get an overview of services that you are building in this course. This can help you understand what exactly you want to implement like the number of services and their respective data, database tables, database interaction code, and more."},{"@type":"Syllabus","name":"Create a maven-gRPC project","timeRequired":"PT4M21S","description":"In this video, learn how to create a basic skeleton of a gRPC project using Maven. This can help to get started with the basic microservices project development. Get to know the dependencies that you need to add for a gRPC project along with the other dependencies you want to use for other APIs (like JDBC, Hibernate, and more) for microservices development."},{"@type":"Syllabus","name":"Define user.proto and generate service stubs","timeRequired":"PT4M42S","description":"In this video, learn how to build a basic user service definition file in gRPC using protocol buffers. Get familiar with the syntax and the options in the file. Discover how to generate the stubs using the protocol buffer compiler, which is used for the implementation of business logic for the service."},{"@type":"Syllabus","name":"Database code setup","timeRequired":"PT4M27S","description":"In this video, explore the basic files needed for setting up a sample database for the services. This includes getting a connection to a database and all the SQL queries required to get the database tables up and running."},{"@type":"Syllabus","name":"Add database method to get user details","timeRequired":"PT7M37S","description":"Data to a gRPC or any other service needs to be fed from a source like a database. In this video, learn how to write the code to fetch the user details from the user table from the database. This can help you learn to communicate with the database using JDBC calls."},{"@type":"Syllabus","name":"Implement service stub","timeRequired":"PT7M30S","description":"In this video, learn how to write a class that implements the generated stub of user service. This contains any business logic that you want to implement and a call to the database's method written in the previous video. This helps you understand how to implement service stub generated by the protocol buffers in gRPC and provide business logic to it."},{"@type":"Syllabus","name":"Write code to host the user service","timeRequired":"PT8M55S","description":"In this video, learn how to write a server-class that starts to host the user service on a localhost machine on a specific port. This helps you learn how to host the service implementation on a server so that it can be accessed by the clients."},{"@type":"Syllabus","name":"Test the user service","timeRequired":"PT6M13S","description":"In this video, learn how to set up the BloomRPC GUI to test the user service. Learn how you can quickly test out services using a GUI interface as opposed to writing out client code."},{"@type":"Syllabus","name":"Define order.proto and generate stubs","timeRequired":"PT6M10S","description":"In this video, learn how to build the service definition file for order service using protocol buffers and generate stubs out of it. This is to ensure the order service stubs are in place for implementation."},{"@type":"Syllabus","name":"Add database method to get orders","timeRequired":"PT8M17S","description":"In this video, learn how to add a method to get the order details for a user from the orders table of the database. This is to ensure that the persisted data for orders in the database is retrieved and passed on to the service layer for further use."},{"@type":"Syllabus","name":"Add service method to get order details","timeRequired":"PT6M47S","description":"In this video, learn how to implement the business logic required in a service class. This method also includes a call to the database's method written in the previous video. By doing this, you can implement a service layer for order management by using the server stubs generated in gRPC."},{"@type":"Syllabus","name":"Write code to host order service","timeRequired":"PT3M48S","description":"In this video, learn how to set up a server for the order service on the localhost machine and a specific port. This is the same as you did for the user service. This way, you can host the service so that it is available to the client."},{"@type":"Syllabus","name":"Test the order service using the client","timeRequired":"PT2M57S","description":"In this video, learn how to test out the service using the GUI BloomRPC client."},{"@type":"Syllabus","name":"Recap to connect user and order services","timeRequired":"PT1M50S","description":"In this video, learn how to connect a user and order services."},{"@type":"Syllabus","name":"Write a client to call order service","timeRequired":"PT5M14S","description":"In this video, learn how to write a gRPC Java client for order service so that it is accessible from user service. This is how a third party can call your order service."},{"@type":"Syllabus","name":"Call order client from user service","timeRequired":"PT7M44S","description":"In this video, learn how to connect two services with each other via gRPC calls. Often in practice, gRPC back-end services need to pass on information to each other to serve a business functionality. This video teaches you to do just that and how to extract some order data and put it into the user response."},{"@type":"Syllabus","name":"Test the full flow of order management","timeRequired":"PT6M43S","description":"In this video, learn how to test the entire flow of getting orders for a user and the user details along with it with the help of the user and order services. By doing this, verify the connection between multiple gRPC services."},{"@type":"Syllabus","name":"Challenge: Implement add-to-cart use case","timeRequired":"PT1M33S","description":"Assume you are building back-end services for a shopping cart application. The user has needs to add a product to the cart."},{"@type":"Syllabus","name":"Building gRPC microservices in Java: Advanced concepts","timeRequired":"PT35S","description":"In this video, get an overview of advanced concepts."}],"aggregateRating":{"@type":"AggregateRating","ratingCount":350,"ratingValue":4.7,"bestRating":5,"worstRating":1},"review":[{"@type":"Review","author":{"@type":"Person","name":"Lyubomir Kolev","jobTitle":"Software Engineer at Cisco Systems","url":"https://bg.linkedin.com/in/lyubomir-kolev-853a066b"},"reviewRating":{"@type":"Rating","ratingValue":5},"reviewBody":"Clear explanations and good examples.","datePublished":"2024-07-12T11:17:46.298Z","publisher":{"@type":"Organization","name":"LinkedIn"},"bestRating":5,"worstRating":1},{"@type":"Review","author":{"@type":"Person","name":"Serhii Pylypenko","jobTitle":"Java Developer","url":"https://ua.linkedin.com/in/serhii-pylypenko-b706966"},"reviewRating":{"@type":"Rating","ratingValue":5},"reviewBody":"Good practical introduction to gRPC.","datePublished":"2024-02-11T17:33:42.293Z","publisher":{"@type":"Organization","name":"LinkedIn"},"bestRating":5,"worstRating":1},{"@type":"Review","author":{"@type":"Person","name":"Komal Chopra","jobTitle":"Senior Automation Engineer @ JPMorgan Chase & Co. | Certified Scrum Master| Certified Safe 5 practitioner","url":"https://ie.linkedin.com/in/komal-chopra"},"reviewRating":{"@type":"Rating","ratingValue":5},"reviewBody":"Amazing diversion from basic understanding to practical implementation","datePublished":"2024-01-17T16:59:53.969Z","publisher":{"@type":"Organization","name":"LinkedIn"},"bestRating":5,"worstRating":1}],"video":{"@type":"VideoObject","name":"Microservices with gRPC - Building Java Microservices with gRPC","author":{"@type":"Person","name":"Ketkee Aryamane","description":"Technical Writer / Knowledge Management Contribution Strategist","jobTitle":"Technical Writer / Knowledge Management Contribution Strategist","url":"https://se.linkedin.com/in/ketkee-aryamane-19532098"},"thumbnailUrl":"https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&v=beta&t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw","description":"This course teaches advanced Java programmers to use the polyglot gRPC open source framework to build and connect Java microservices.","duration":"PT39S","datePublished":"2021-04-29","uploadDate":"2021-04-29","requiresSubscription":false,"isAccessibleForFree":true,"contentUrl":"https://www.linkedin.com/learning/building-java-microservices-with-grpc/microservices-with-grpc"},"educationalLevel":"Advanced","educationalCredentialAwarded":[{"@type":"EducationalOccupationalCredential","name":"LinkedIn Learning Certificate of Completion","url":"https://www.linkedin.com/help/learning/answer/a598944/learning-certificates-of-completion-faqs","credentialCategory":"Certificate","offers":[{"@type":"Offer","category":"Subscription"}]}]} </script> <!----> </head> <body dir="ltr"> <!----><!----><!----> <!----> <a href="#main-content" class="skip-link btn-md btn-primary absolute z-11 -top-[100vh] focus:top-0"> Skip to main content </a> <header class="header base-detail-page__header px-mobile-container-padding bg-color-background-container global-alert-offset sticky-header"> <nav class="nav pt-1.5 pb-2 flex items-center justify-between relative flex-nowrap babymamabear:py-1.5 nav--minified-mobile " aria-label="Primary"> <a href="https://www.linkedin.com/learning/?trk=learning-course_nav-header-logo" class="nav__logo-link link-no-visited-state z-1 mr-auto min-h-[52px] flex items-center babybear:z-0 hover:no-underline focus:no-underline active:no-underline babymamabear:mr-3" data-tracking-control-name="learning-course_nav-header-logo" data-tracking-will-navigate> <div class="learning-logo"> <icon class="learning-logo__inbug onload" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/4zqr0f9jf98vi2nkijyc3bex2"></icon> <span class="learning-logo__text" aria-hidden="true">Learning</span> <span class="sr-only">LinkedIn Learning</span> </div> </a> <section class="search-bar relative flex flex-grow h-[40px] bg-cool-gray-20 min-w-0 max-w-full mx-4 rounded-sm babymamabear:mx-0 babymamabear:mb-1.5 babymamabear:bg-color-transparent babymamabear:w-full babymamabear:flex babymamabear:flex-wrap search-bar--minified-mobile" data-current-search-type="LEARNING"> <button class="search-bar__placeholder papabear:hidden text-input w-full mt-1.5 !pl-[14px] border-1 border-solid border-color-border-faint rounded-[2px] h-[40px] max-h-[40px] flex items-center overflow-hidden cursor-text" data-tracking-control-name="learning-course_search-switcher-opener"> <icon class="text-color-icon w-3 h-3 mr-1" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/397vrsk6op88l4981ji1xe1qt"></icon> <div class="search-bar__full-placeholder font-sans text-md text-color-text max-w-[calc(100%-40px)] text-left whitespace-nowrap overflow-hidden text-ellipsis"> <!----><!----> Search skills, subjects, or software <!----> </div> <span class="sr-only">Expand search</span> </button> <div class="switcher-tabs__trigger-and-tabs babymamabear:flex"> <button aria-expanded="false" class="switcher-tabs__placeholder flex !h-full !py-0 !pl-2 !pr-1.5 border-r-1 border-solid border-r-color-border-faint babymamabear:hidden tab-md papabear:tab-vertical papabear:justify-start cursor-pointer" data-tracking-control-name="learning-course_switcher-tabs-placeholder" aria-describedby="switcher-description"> <span class="switcher-tabs__placeholder-text m-auto"></span> <icon class="switcher-tabs__caret-down-filled onload pointer-events-none block my-auto min-h-[24px] min-w-[24px] h-[24px] babymamabear:hidden" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/7asbl4deqijhoy3z2ivveispv"></icon> </button> <div id="switcher-description" class="hidden">This button displays the currently selected search type. When expanded it provides a list of search options that will switch the search inputs to match the current selection. </div> <!----> <div class="switcher-tabs hidden z-[1] w-auto min-w-[160px] mb-1.5 py-1 absolute top-[48px] left-0 border-solid border-1 border-color-border-faint papabear:container-raised babymamabear:static babymamabear:w-[100vw] babymamabear:h-[48px] babymamabear:p-0 overflow-y-hidden overflow-x-auto md:overflow-x-hidden"> <ul class="switcher-tabs__list flex flex-1 items-stretch papabear:flex-col" role="tablist"> <li class="switcher-tabs__tab h-[44px] babymamabear:basis-1/2" role="presentation"> <button aria-controls="jobs-search-panel" aria-selected="false" class="switcher-tabs__button w-full h-full tab-md papabear:tab-vertical papabear:justify-start cursor-pointer " data-switcher-type="JOBS" data-tracking-control-name="learning-course_switcher-tabs-jobs-search-switcher" id="job-switcher-tab" role="tab"> Jobs </button> </li> <li class="switcher-tabs__tab h-[44px] babymamabear:basis-1/2" role="presentation"> <button aria-controls="people-search-panel" aria-selected="false" class="switcher-tabs__button w-full h-full tab-md papabear:tab-vertical papabear:justify-start cursor-pointer " data-switcher-type="PEOPLE" data-tracking-control-name="learning-course_switcher-tabs-people-search-switcher" id="people-switcher-tab" role="tab"> People </button> </li> <li class="switcher-tabs__tab h-[44px] babymamabear:basis-1/2" role="presentation"> <button aria-controls="learning-search-panel" aria-selected="true" class="switcher-tabs__button w-full h-full tab-md papabear:tab-vertical papabear:justify-start cursor-pointer tab-selected" data-switcher-type="LEARNING" data-tracking-control-name="learning-course_switcher-tabs-learning-search-switcher" id="learning-switcher-tab" role="tab"> Learning </button> </li> </ul> <button aria-label="Close" class="switcher-tabs__cancel-btn papabear:hidden block w-6 h-6 m-auto text-color-text-low-emphasis" data-tracking-control-name="learning-course_switcher-tabs-cancel-search-switcher" type="button"> <icon class="switcher-tabs__cancel-icon block w-3 h-3 m-auto onload" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cs55jggk4p3uqh9ozxdmpvjg7"></icon> </button> </div> </div> <section class="base-search-bar w-full h-full" data-searchbar-type="PEOPLE" aria-labelledby="people-switcher-tab" id="people-search-panel" role="tabpanel"> <form class="base-search-bar__form w-full flex babymamabear:mx-mobile-container-padding babymamabear:flex-col" role="search" action="/pub/dir" data-tracking-control-name="learning-course_people-search-bar_base-search-bar-form"> <section class="dismissable-input text-input !pr-3 bg-color-transparent flex items-center h-[40px] min-w-0 relative babybear:w-full babybear:mb-1 search-input"> <input aria-label="First Name" autocomplete="on" class="dismissable-input__input font-sans text-md text-color-text bg-color-transparent flex items-center flex-1 focus:outline-none placeholder:text-color-text-secondary" data-tracking-control-name="learning-course_people-search-bar_first-name_dismissable-input" maxlength="500" name="firstName" placeholder="First Name" type="search"> <button class="dismissable-input__button text-color-text h-[40px] min-w-[24px] w-[24px] -mr-2 opacity-0 transition-opacity duration-[0.1s] disabled:invisible focus:opacity-100" data-tracking-control-name="learning-course_people-search-bar_first-name_dismissable-input-clear" type="button"> <label class="sr-only">Clear text</label> <icon class="dismissable-input__button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cs55jggk4p3uqh9ozxdmpvjg7"></icon> </button> </section> <section class="dismissable-input text-input !pr-3 bg-color-transparent flex items-center h-[40px] min-w-0 relative babybear:w-full babybear:mb-1 search-input"> <input aria-label="Last Name" autocomplete="on" class="dismissable-input__input font-sans text-md text-color-text bg-color-transparent flex items-center flex-1 focus:outline-none placeholder:text-color-text-secondary" data-tracking-control-name="learning-course_people-search-bar_last-name_dismissable-input" maxlength="500" name="lastName" placeholder="Last Name" type="search"> <button class="dismissable-input__button text-color-text h-[40px] min-w-[24px] w-[24px] -mr-2 opacity-0 transition-opacity duration-[0.1s] disabled:invisible focus:opacity-100" data-tracking-control-name="learning-course_people-search-bar_last-name_dismissable-input-clear" type="button"> <label class="sr-only">Clear text</label> <icon class="dismissable-input__button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cs55jggk4p3uqh9ozxdmpvjg7"></icon> </button> </section> <input name="trk" value="learning-course_people-search-bar_search-submit" type="hidden"> <button class="base-search-bar__submit-btn block basis-[40px] flex-shrink-0 cursor-pointer babymamabear:invisible babymamabear:ml-[-9999px] babymamabear:w-[1px] babymamabear:h-[1px]" aria-label="Search" data-tracking-control-name="learning-course_people-search-bar_base-search-bar-search-submit" type="submit"> <icon class="base-search-bar__search-icon onload mx-auto" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cb5bsr4tsn2r4sjg9e3ls4tjl"></icon> </button> </form> </section> <section class="base-search-bar w-full h-full" data-searchbar-type="JOBS" aria-labelledby="job-switcher-tab" id="jobs-search-panel" role="tabpanel"> <form class="base-search-bar__form w-full flex babymamabear:mx-mobile-container-padding babymamabear:flex-col" role="search" action="/jobs/search" data-tracking-control-name="learning-course_jobs-search-bar_base-search-bar-form"> <code id="i18n_aria_live_text_no-suggestions" style="display: none"><!--"No suggestions found"--></code> <code id="i18n_aria_live_text_one-suggestion" style="display: none"><!--"One Suggestion. Use up and down keys to navigate"--></code> <code id="i18n_aria_live_text_multiple-suggestions" style="display: none"><!--"Multiple Suggestions. Use up and down keys to navigate"--></code> <section class="dismissable-input text-input !pr-3 bg-color-transparent flex items-center h-[40px] min-w-0 relative babybear:w-full babybear:mb-1 typeahead-input keywords-typeahead-input text-input"> <input aria-autocomplete="list" aria-controls="job-search-bar-keywords-typeahead-list" aria-haspopup="listbox" aria-label="Search job titles or companies" autocomplete="off" class="dismissable-input__input font-sans text-md text-color-text bg-color-transparent flex items-center flex-1 focus:outline-none placeholder:text-color-text-secondary" data-tracking-control-name="learning-course_dismissable-input" id="job-search-bar-keywords" maxlength="500" name="keywords" placeholder="Search job titles or companies" role="combobox" type="search"> <!----> <div class="typeahead-input__dropdown container-lined absolute top-[calc(100%+3px)] left-0 w-full rounded-b-md rounded-t-none z-[10] overflow-hidden max-w-none babybear:min-w-full babybear:bottom-0 babybear:overflow-y-auto"> <template class="typeahead-item-template"> <li class="typeahead-input__dropdown-item py-1.5 px-2 hover:cursor-pointer hover:bg-color-surface-new-hover hover:border-y-2 hover:border-solid hover:border-color-container-primary" role="option"> <span class="typeahead-input__dropdown-text font-sans text-sm font-bold text-color-text"></span> </li> </template> <ul class="typeahead-input__dropdown-list w-full" id="job-search-bar-keywords-typeahead-list" role="listbox"></ul> </div> <!----> <button class="dismissable-input__button text-color-text h-[40px] min-w-[24px] w-[24px] -mr-2 opacity-0 transition-opacity duration-[0.1s] disabled:invisible focus:opacity-100" data-tracking-control-name="learning-course_dismissable-input-clear" type="button"> <label class="sr-only">Clear text</label> <icon class="dismissable-input__button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cs55jggk4p3uqh9ozxdmpvjg7"></icon> </button> </section> <!----> <code id="i18n_aria_live_text_no-suggestions" style="display: none"><!--"No suggestions found"--></code> <code id="i18n_aria_live_text_one-suggestion" style="display: none"><!--"One Suggestion. Use up and down keys to navigate"--></code> <code id="i18n_aria_live_text_multiple-suggestions" style="display: none"><!--"Multiple Suggestions. Use up and down keys to navigate"--></code> <section class="dismissable-input text-input !pr-3 bg-color-transparent flex items-center h-[40px] min-w-0 relative babybear:w-full babybear:mb-1 typeahead-input location-typeahead-input"> <input aria-autocomplete="list" aria-controls="job-search-bar-location-typeahead-list" aria-haspopup="listbox" aria-label="Location" autocomplete="off" class="dismissable-input__input font-sans text-md text-color-text bg-color-transparent flex items-center flex-1 focus:outline-none placeholder:text-color-text-secondary" data-tracking-control-name="learning-course_dismissable-input" id="job-search-bar-location" maxlength="500" name="location" placeholder="Location" role="combobox" value="Hong Kong" type="search"> <!----> <div class="typeahead-input__dropdown container-lined absolute top-[calc(100%+3px)] left-0 w-full rounded-b-md rounded-t-none z-[10] overflow-hidden max-w-none babybear:min-w-full babybear:bottom-0 babybear:overflow-y-auto"> <template class="typeahead-item-template"> <li class="typeahead-input__dropdown-item py-1.5 px-2 hover:cursor-pointer hover:bg-color-surface-new-hover hover:border-y-2 hover:border-solid hover:border-color-container-primary" role="option"> <span class="typeahead-input__dropdown-text font-sans text-sm font-bold text-color-text"></span> </li> </template> <ul class="typeahead-input__dropdown-list w-full" id="job-search-bar-location-typeahead-list" role="listbox"></ul> </div> <!----> <button class="dismissable-input__button text-color-text h-[40px] min-w-[24px] w-[24px] -mr-2 opacity-0 transition-opacity duration-[0.1s] disabled:invisible focus:opacity-100" data-tracking-control-name="learning-course_dismissable-input-clear" type="button"> <label class="sr-only">Clear text</label> <icon class="dismissable-input__button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cs55jggk4p3uqh9ozxdmpvjg7"></icon> </button> </section> <input name="geoId" value="102817007" type="hidden"> <input name="trk" value="learning-course_jobs-search-bar_search-submit" type="hidden"> <button class="base-search-bar__submit-btn block basis-[40px] flex-shrink-0 cursor-pointer babymamabear:invisible babymamabear:ml-[-9999px] babymamabear:w-[1px] babymamabear:h-[1px]" aria-label="Search" data-tracking-control-name="learning-course_jobs-search-bar_base-search-bar-search-submit" type="submit"> <icon class="base-search-bar__search-icon onload mx-auto" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cb5bsr4tsn2r4sjg9e3ls4tjl"></icon> </button> </form> </section> <section class="base-search-bar w-full h-full" data-searchbar-type="LEARNING" aria-labelledby="learning-switcher-tab" id="learning-search-panel" role="tabpanel"> <form class="base-search-bar__form w-full flex babymamabear:mx-mobile-container-padding babymamabear:flex-col" role="search" action="/learning/search" data-tracking-control-name="learning-course_learning-search-bar_base-search-bar-form"> <section class="dismissable-input text-input !pr-3 bg-color-transparent flex items-center h-[40px] min-w-0 relative babybear:w-full babybear:mb-1 search-input"> <input aria-label="Search skills, subjects, or software" autocomplete="on" class="dismissable-input__input font-sans text-md text-color-text bg-color-transparent flex items-center flex-1 focus:outline-none placeholder:text-color-text-secondary" data-tracking-control-name="learning-course_learning-search-bar_keywords_dismissable-input" maxlength="500" name="keywords" placeholder="Search skills, subjects, or software" type="search"> <button class="dismissable-input__button text-color-text h-[40px] min-w-[24px] w-[24px] -mr-2 opacity-0 transition-opacity duration-[0.1s] disabled:invisible focus:opacity-100" data-tracking-control-name="learning-course_learning-search-bar_keywords_dismissable-input-clear" type="button"> <label class="sr-only">Clear text</label> <icon class="dismissable-input__button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cs55jggk4p3uqh9ozxdmpvjg7"></icon> </button> </section> <input class="nav__search-uoo" name="upsellOrderOrigin" type="hidden"> <input name="trk" value="learning-course_learning-search-bar_search-submit" type="hidden"> <button class="base-search-bar__submit-btn block basis-[40px] flex-shrink-0 cursor-pointer babymamabear:invisible babymamabear:ml-[-9999px] babymamabear:w-[1px] babymamabear:h-[1px]" aria-label="Search" data-tracking-control-name="learning-course_learning-search-bar_base-search-bar-search-submit" type="submit"> <icon class="base-search-bar__search-icon onload mx-auto" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cb5bsr4tsn2r4sjg9e3ls4tjl"></icon> </button> </form> </section> <!----> <div aria-live="polite" class="search-bar__live-text sr-only" role="status"></div> </section> <!----> <div class="nav__cta-container order-3 flex gap-x-1 justify-end min-w-[100px] flex-nowrap flex-shrink-0 babybear:flex-wrap flex-2 babymamabear:min-w-[50px] "> <a class="nav__button-tertiary btn-md btn-tertiary" href="http://www.linkedin.com/learning/subscription/products?courseSlug=building-java-microservices-with-grpc&amp;destRedirectURL=https%3A%2F%2Fwww%2Elinkedin%2Ecom%2Flearning%2Fbuilding-java-microservices-with-grpc&amp;trk=learning-course_nav-header-join&amp;upsellTrk=lil_upsell_nav_subscription&amp;session_redirect=https%3A%2F%2Fwww.linkedin.com%2Flearning%2Fbuilding-java-microservices-with-grpc%3Ftrk%3Dlearning-topics_learning-search-card_search-card" data-tracking-control-name="lil_upsell_nav_subscription" data-tracking-impression-name="lil_upsell_nav_subscription" data-test-live-nav-primary-cta data-tracking-will-navigate> Start free trial </a> <a class="nav__button-secondary btn-md btn-secondary-emphasis" href="https://www.linkedin.com/learning-login/?redirect=https%3A%2F%2Fwww%2Elinkedin%2Ecom%2Flearning%2Fbuilding-java-microservices-with-grpc%3Ftrk%3Dlearning-topics_learning-search-card_search-card%26trk%3Dlearning-topics_learning-search-card_search-card&amp;fromSignIn=true&amp;session_redirect=https%3A%2F%2Fwww.linkedin.com%2Flearning%2Fbuilding-java-microservices-with-grpc%3Ftrk%3Dlearning-topics_learning-search-card_search-card&amp;trk=learning-course_nav-header-signin" data-tracking-control-name="learning-course_nav-header-signin" data-tracking-will-navigate> Sign in </a> <a aria-label="Sign in" class="nav__link-person papabear:hidden mamabear:hidden" data-tracking-control-name="learning-course_nav-header-signin" data-tracking-will-navigate href="https://www.linkedin.com/learning-login/?redirect=https%3A%2F%2Fwww%2Elinkedin%2Ecom%2Flearning%2Fbuilding-java-microservices-with-grpc%3Ftrk%3Dlearning-topics_learning-search-card_search-card%26trk%3Dlearning-topics_learning-search-card_search-card&amp;fromSignIn=true&amp;session_redirect=https%3A%2F%2Fwww.linkedin.com%2Flearning%2Fbuilding-java-microservices-with-grpc%3Ftrk%3Dlearning-topics_learning-search-card_search-card&amp;trk=learning-course_nav-header-signin"> <img class="inline-block relative rounded-[50%] w-4 h-4 bg-color-entity-ghost-background" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/9c8pery4andzj6ohjkjp54ma2" data-ghost-classes="bg-color-entity-ghost-background" data-ghost-url="https://static.licdn.com/aero-v1/sc/h/9c8pery4andzj6ohjkjp54ma2" alt> </a> </div> <!----> <!----> </nav> </header> <!----> <div class="cta-banner "> <div class="enterprise-nav"> <div class="enterprise-nav__content-wrapper"> <p id="enterprise-nav-solutions" class="enterprise-nav__content" tabindex="-1"> Solutions for: </p> <a href="https://learning.linkedin.com/for-entire-companies?src=li-learning-nav&trk=learning-course_enterprise-nav" aria-labelledby="enterprise-nav-solutions business-nav-business" class="enterprise-nav__content" data-tracking-control-name="learning-course_enterprise-nav" data-tracking-will-navigate="true" id="business-nav-business">Business</a> <a href="https://learning.linkedin.com/for-higher-education?src=li-learning-nav&trk=learning-course_enterprise-nav" aria-labelledby="enterprise-nav-solutions business-nav-education" class="enterprise-nav__content" data-tracking-control-name="learning-course_enterprise-nav" data-tracking-will-navigate="true" id="business-nav-education">Higher Education</a> <a href="https://learning.linkedin.com/for-governments?src=li-learning-nav&trk=learning-course_enterprise-nav" aria-labelledby="enterprise-nav-solutions business-nav-government" class="enterprise-nav__content" data-tracking-control-name="learning-course_enterprise-nav" data-tracking-will-navigate="true" id="business-nav-government">Government</a> <a href="/learning/subscription/teams?veh=lil_upx&src=li-learning-nav&trk=learning-course_enterprise-nav" aria-labelledby="enterprise-nav-solutions business-nav-buy" class="enterprise-nav__content" data-test-live-enterprise-upsell="true" data-tracking-control-name="learning-course_enterprise-nav" data-tracking-will-navigate="true" data-tracking-impression-name="lil_upsell_learning-course_enterprise-nav_teambuy" id="business-nav-buy">Buy for my team</a> </div> </div> <!----> <!----> </div> <main class="main papabear:flex papabear:w-content-max-w papabear:mx-auto papabear:pt-desktop-content-top-margin mamabear:pt-desktop-content-top-margin " id="main-content" role="main"> <section class="core-rail mx-auto papabear:w-core-rail-width mamabear:max-w-[790px] babybear:max-w-[790px]"> <ol class="breadcrumb__list"> <li class="breadcrumb__item"> <a class="breadcrumb__link" href="https://www.linkedin.com/learning/browse?trk=learning-course_breadcrumb" data-tracking-control-name="learning-course_breadcrumb" data-tracking-will-navigate>All topics</a> </li> <li class="breadcrumb__item"> <a class="breadcrumb__link" href="https://www.linkedin.com/learning/topics/technology?trk=learning-course_breadcrumb" data-tracking-control-name="learning-course_breadcrumb" data-tracking-will-navigate>Technology</a> </li> <li class="breadcrumb__item"> <a class="breadcrumb__link" href="https://www.linkedin.com/learning/topics/software-development?trk=learning-course_breadcrumb" data-tracking-control-name="learning-course_breadcrumb" data-tracking-will-navigate>Software Development</a> </li> <li class="breadcrumb__item"> <a class="breadcrumb__link" href="https://www.linkedin.com/learning/topics/programming-languages?trk=learning-course_breadcrumb" data-tracking-control-name="learning-course_breadcrumb" data-tracking-will-navigate>Programming Languages</a> </li> </ol> <script type="application/ld+json"> {"@context":"http://schema.org/","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"All topics","item":"https://www.linkedin.com/learning/browse"},{"@type":"ListItem","position":2,"name":"Technology","item":"https://www.linkedin.com/learning/topics/technology"},{"@type":"ListItem","position":3,"name":"Software Development","item":"https://www.linkedin.com/learning/topics/software-development"},{"@type":"ListItem","position":4,"name":"Programming Languages","item":"https://www.linkedin.com/learning/topics/programming-languages"}]} </script> <section class="top-card-layout container-lined overflow-hidden babybear:rounded-[0px]"> <section class="top-card__image-container"> <img class="top-card__image" alt="Building Java Microservices with gRPC" data-delayed-url="https://media.licdn.com/dms/image/v2/C4E0DAQE_60QWBddOlA/learning-public-crop_675_1200/learning-public-crop_675_1200/0/1619549730124?e=2147483647&amp;v=beta&amp;t=VaK7XOgvSx-NCZlQad454giyA82uMeJFu4QJpBdjfnw"> <a class="top-card__overlay-button" data-tracking-control-name="course_preview" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/microservices-with-grpc?autoplay=true&amp;trk=course_preview"> <span class="top-card__preview-cta "> <icon class="top-card__preview-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5jwhkytplzxiejvhzfu0t7m8l"> </icon> <span class="top-card__preview-cta-text">Preview</span> </span> <!----> </a> </section> <div class="top-card-layout__card relative p-2 papabear:p-details-container-padding"> <div class="top-card-layout__entity-info-container flex flex-wrap papabear:flex-nowrap"> <div class="top-card-layout__entity-info flex-grow flex-shrink-0 basis-0 babybear:flex-none babybear:w-full babybear:flex-none babybear:w-full"> <h1 class="top-card-layout__title font-sans text-lg papabear:text-xl font-bold leading-open text-color-text mb-0"> Building Java Microservices with gRPC </h1> <h2 class="top-card-layout__headline break-words font-sans text-md leading-open text-color-text"> <div class="top-card__headline-row"> <span class="top-card__headline-row-item top-card__headline-row-item--large">With Ketkee Aryamane</span> <span class="top-card__headline-row-item">Liked by 1,106 users</span> </div> <div class="top-card__headline-row"> <span class="top-card__headline-row-item">Duration: 2h 30m</span> <span class="top-card__headline-row-item">Skill level: Advanced</span> <span class="top-card__headline-row-item">Released: 4/29/2021</span> </div> </h2> <!----> <!----> <div class="top-card-layout__cta-container flex flex-wrap mt-0.5 papabear:mt-0 ml-[-12px]"> <a href="http://www.linkedin.com/learning/subscription/products?courseSlug=building-java-microservices-with-grpc&amp;destRedirectURL=https%3A%2F%2Fwww%2Elinkedin%2Ecom%2Flearning%2Fbuilding-java-microservices-with-grpc&amp;trk=course_info&amp;upsellTrk=lil_upsell_course_info_subscription" data-tracking-control-name="lil_upsell_course_info_subscription" data-tracking-impression-name="lil_upsell_course_info_subscription" data-litms-tracking-control-name="lil_upsell_course_info_subscription" data-tracking-will-navigate class="top-card__upsell-link top-card-layout__cta mt-2 ml-1.5 h-auto babybear:flex-auto top-card-layout__cta--primary btn-md btn-primary" data-test-live-course-sub-upsell> Start my 1-month free trial </a> <a class="buy-for-your-team-cta__link top-card-layout__cta mt-2 ml-1.5 h-auto babybear:flex-auto top-card-layout__cta--secondary btn-md btn-secondary" href="/learning/subscription/teams?veh=lil_upx&amp;src=li-lil-upsell&amp;trk=learning-course_buy-for-your-team-cta" data-tracking-control-name="learning-course_buy-for-your-team-cta" data-tracking-impression-name="lil_upsell_learning-course_buy-for-your-team-cta_teambuy" data-test-live-buy-for-your-team-upsell data-tracking-will-navigate> Buy for my team </a> </div> </div> <!----> </div> <!----> <!----> </div> </section> <div class="details mx-details-container-padding"> <section class="core-section-container my-3 course-details"> <!----> <h2 class="core-section-container__title section-title"> Course details </h2> <!----> <div class="core-section-container__content break-words"> <section class="show-more-less-html course-details__description" data-max-lines="4"> <div class="show-more-less-html__markup show-more-less-html__markup--clamp-after-4 relative overflow-hidden"> Given the increasing trend toward microservices architecture, more and more businesses are adopting gRPC, which helps developers build scalable microservices with a low latency and higher throughput. In this course, Ketkee Aryamane covers the fundamentals of gRPC and its key features. Ketkee starts with the basic theory behind RPC and the HTTP/2 protocol, then shows how to build two gRPC services in Java from scratch using protocol buffers, and connects those services with each other using gRPC. She also covers how to generate clients that can invoke those services. If you’re a developer looking for new ways of developing web services, following along with Ketkee as she builds microservices from scratch is a great way to learn new concepts, while also seeing these concepts put to practical use. </div> <button class="show-more-less-html__button show-more-less-button show-more-less-html__button--more ml-0.5" data-tracking-control-name="learning-course_show-more-html-btn" aria-label="i18n_show_more" aria-expanded="false"> <!----> Show more <icon class="show-more-less-html__button-icon show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cyolgscd0imw2ldqppkrb84vo"></icon> </button> <button class="show-more-less-html__button show-more-less-button show-more-less-html__button--less ml-0.5" data-tracking-control-name="learning-course_show-less-html-btn" aria-label="i18n_show_less" aria-expanded="true"> <!----> Show less <icon class="show-more-less-html__button-icon show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/4chtt12k98xwnba1nimld2oyg"></icon> </button> <!----> </section> </div> </section> <section class="core-section-container my-3 course-skills"> <!----> <h2 class="core-section-container__title section-title"> Skills you’ll gain </h2> <!----> <div class="core-section-container__content break-words"> <ul class="course-skills__skill-list"> <li class="course-skills__skill-list-item"> <a href="https://www.linkedin.com/learning/search?keywords=gRPC&amp;trk=learning-course_pill-list" data-tracking-control-name="learning-course_pill-list" data-tracking-will-navigate class="pill flex w-fit mr-[6px] mb-1 hover:no-underline skill-pill"> gRPC </a> </li> <li class="course-skills__skill-list-item"> <a href="https://www.linkedin.com/learning/search?keywords=Microservices&amp;trk=learning-course_pill-list" data-tracking-control-name="learning-course_pill-list" data-tracking-will-navigate class="pill flex w-fit mr-[6px] mb-1 hover:no-underline skill-pill"> Microservices </a> </li> <li class="course-skills__skill-list-item"> <a href="https://www.linkedin.com/learning/topics/java?trk=learning-course_pill-list" data-tracking-control-name="learning-course_pill-list" data-tracking-will-navigate class="pill flex w-fit mr-[6px] mb-1 hover:no-underline skill-pill"> Java </a> </li> </ul> </div> </section> <section class="core-section-container my-3"> <!----> <h2 class="core-section-container__title section-title"> Earn a sharable certificate </h2> <!----> <div class="core-section-container__content break-words"> <p class="course-certificate__body-paragraph">Share what you’ve learned, and be a standout professional in your desired industry with a certificate showcasing your knowledge gained from the course.</p> <div class="course-certificate__image-container"> <img class="course-certificate__certificate-image" alt="Sample certificate" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/52nu8qc7cfcn7vrftr7ttceqt"> <div> <h3 class="course-certificate__detail-list-heading"> <div class="learning-logo"> <icon class="learning-logo__inbug onload" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/4zqr0f9jf98vi2nkijyc3bex2"></icon> <span class="learning-logo__text learning-logo__text--show-on-mobile" aria-hidden="true">Learning</span> <span class="sr-only">LinkedIn Learning</span> </div> <span>Certificate of Completion</span> </h3> <ul> <li class="course-certificate__detail-list-item"> <div class="course-certificate__detail-list-item-icon-wrapper"><icon data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5lqa4dj5v9gp6yjh6s6iwtdbb"></icon></div> <p class="course-certificate__detail-list-item-text">Showcase on your LinkedIn profile under “Licenses and Certificate” section</p> </li> <li class="course-certificate__detail-list-item"> <div class="course-certificate__detail-list-item-icon-wrapper"><icon data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5lqa4dj5v9gp6yjh6s6iwtdbb"></icon></div> <p class="course-certificate__detail-list-item-text">Download or print out as PDF to share with others</p> </li> <li class="course-certificate__detail-list-item"> <div class="course-certificate__detail-list-item-icon-wrapper"><icon data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5lqa4dj5v9gp6yjh6s6iwtdbb"></icon></div> <p class="course-certificate__detail-list-item-text">Share as image online to demonstrate your skill</p> </li> </ul> </div> </div> </div> </section> <section class="core-section-container my-3 course-instructors"> <!----> <h2 class="core-section-container__title section-title"> Meet the instructor </h2> <!----> <div class="core-section-container__content break-words"> <ul class="course-instructors__list"> <li class="course-instructors__list-item"> <a href="https://se.linkedin.com/in/ketkee-aryamane-19532098?trk=learning-course_instructor" target="_self" data-tracking-control-name="learning-course_instructor" data-tracking-will-navigate class="base-card relative w-full hover:no-underline focus:no-underline base-card--link base-main-card flex flex-wrap py-2 pr-2 babybear:pr-0 base-main-card--link"> <!----> <img class="inline-block relative rounded-[50%] w-6 h-6 bg-color-entity-ghost-background" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/9c8pery4andzj6ohjkjp54ma2" data-ghost-classes="bg-color-entity-ghost-background" data-ghost-url="https://static.licdn.com/aero-v1/sc/h/9c8pery4andzj6ohjkjp54ma2" alt="Click here to view Ketkee Aryamane’s instructor page"> <div class="base-main-card__info self-center ml-1 flex-1 relative break-words papabear:min-w-0 mamabear:min-w-0 babybear:w-full"> <h3 class="base-main-card__title font-sans text-[18px] font-bold text-color-text overflow-hidden "> Ketkee Aryamane </h3> <h4 class="base-main-card__subtitle body-text text-color-text overflow-hidden"> Technical Writer / Knowledge Management Contribution Strategist </h4> <!----> <!----> </div> <!----> </a> </li> </ul> </div> </section> <section class="core-section-container my-3 reviews-feed"> <!----> <h2 class="core-section-container__title section-title"> Learner reviews </h2> <!----> <div class="core-section-container__content break-words"> <div class="reviews-feed__ratings-summary"> <section class="ratings-summary"> <div class="ratings-summary__overall-rating"> <h3 class="ratings-summary__header"><span class="ratings-summary__rating-average">4.7</span> <span class="ratings-summary__rating-max">out of 5</span></h3> <figure class="ratings-summary__figure"> <span class="star-rating" role="img" aria-label="Rating: 4.7 out of 5 stars"> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/7dacecy4xq1otzk8pae2g0hxd"></icon> </span> </span> <figcaption class="ratings-summary__ratings-total">350 ratings</figcaption> </figure> </div> <div class="ratings-summary__breakdown"> <div class="ratings-summary__disclaimer"> <div class="tooltip"> <button class="tooltip__trigger ratings-summary__disclaimer-trigger" data-tracking-control-name="toggle_disclaimer" type="button"> <icon class="ratings-summary__disclaimer-icon" data-svg-class-name="ratings-summary__disclaimer-icon-svg" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/g8uts9v3k83n9e3iyvcxit0k"> </icon> <span class="ratings-summary__disclaimer-text">How are ratings calculated?</span> </button> <span role="tooltip" class="tooltip__popup" aria-hidden="true"> The overall rating is calculated using the average of submitted ratings. Ratings and reviews can only be submitted when non-anonymous learners complete at least 40% of the course. This helps us avoid fake reviews and spam. </span> </div> </div> <ul> <li> <figure class="ratings-summary__rating-count"> <figcaption class="ratings-summary__rating-count-label"> 5 star </figcaption> <progress class="ratings-summary__progress-bar" max="350" value="262" aria-valuemin="0" aria-valuenow="262" aria-valuemax="350"> Current value: 262 </progress> <span class="ratings-summary__rating-count-percent"> 75% </span> </figure> </li> <li> <figure class="ratings-summary__rating-count"> <figcaption class="ratings-summary__rating-count-label"> 4 star </figcaption> <progress class="ratings-summary__progress-bar" max="350" value="71" aria-valuemin="0" aria-valuenow="71" aria-valuemax="350"> Current value: 71 </progress> <span class="ratings-summary__rating-count-percent"> 20% </span> </figure> </li> <li> <figure class="ratings-summary__rating-count"> <figcaption class="ratings-summary__rating-count-label"> 3 star </figcaption> <progress class="ratings-summary__progress-bar" max="350" value="14" aria-valuemin="0" aria-valuenow="14" aria-valuemax="350"> Current value: 14 </progress> <span class="ratings-summary__rating-count-percent"> 4% </span> </figure> </li> <li> <figure class="ratings-summary__rating-count"> <figcaption class="ratings-summary__rating-count-label"> 2 star </figcaption> <progress class="ratings-summary__progress-bar" max="350" value="3" aria-valuemin="0" aria-valuenow="3" aria-valuemax="350"> Current value: 3 </progress> <span class="ratings-summary__rating-count-percent"> &#60;1% </span> </figure> </li> <li> <figure class="ratings-summary__rating-count"> <figcaption class="ratings-summary__rating-count-label"> 1 star </figcaption> <progress class="ratings-summary__progress-bar" max="350" value="0" aria-valuemin="0" aria-valuenow="0" aria-valuemax="350"> Current value: 0 </progress> <span class="ratings-summary__rating-count-percent"> 0% </span> </figure> </li> </ul> </div> </section> </div> <ul class="reviews-feed__reviews-list"> <li class="reviews-feed__reviews-list-item"> <div class="review-card"> <div class="base-card relative w-full hover:no-underline focus:no-underline base-card--link base-main-card flex flex-wrap py-2 pr-2 babybear:pr-0 base-main-card--link review-card__entity"> <a class="base-card__full-link absolute top-0 right-0 bottom-0 left-0 p-0 z-[2]" href="https://bg.linkedin.com/in/lyubomir-kolev-853a066b?trk=learning-course" data-tracking-control-name="learning-course" data-tracking-will-navigate> <span class="sr-only"> Lyubomir Kolev <!----> </span> </a> <img class="inline-block relative rounded-[50%] w-6 h-6 bg-color-entity-ghost-background" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/9c8pery4andzj6ohjkjp54ma2" data-ghost-classes="bg-color-entity-ghost-background" data-ghost-url="https://static.licdn.com/aero-v1/sc/h/9c8pery4andzj6ohjkjp54ma2" alt="Lyubomir Kolev"> <div class="base-main-card__info self-center ml-1 flex-1 relative break-words papabear:min-w-0 mamabear:min-w-0 babybear:w-full"> <h3 class="base-main-card__title font-sans text-[18px] font-bold text-color-text overflow-hidden "> Lyubomir Kolev <!----> </h3> <h4 class="base-main-card__subtitle body-text text-color-text overflow-hidden"> Software Engineer at Cisco Systems </h4> <!----> <div class="body-text text-color-text-low-emphasis base-main-card__metadata"> <div class="review-card__content"> <div class="review-card__centered-row"> <div class="review-card__star-container"> <span class="star-rating" role="img" aria-label="Rating: 5 out of 5 stars"> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> </span> </div> <span class="review-card__rating"> 5/5 </span> <span class="review-card__date"> July 12, 2024 </span> </div> <div class="review-card__text"> Clear explanations and good examples. </div> <div class="review-card__centered-row review-card__actions"> <a class="review-card__centered-row review-card__action-button" aria-label="Lyubomir Kolev’s comment is helpful" data-tracking-control-name="learning-course_review-card-helpful-button" data-tracking-will-navigate href="https://www.linkedin.com/learning-login/?redirect=https%3A%2F%2Fwww%2Elinkedin%2Ecom%2Flearning%2Fbuilding-java-microservices-with-grpc%3Ftrk%3Dlearning-topics_learning-search-card_search-card%26trk%3Dlearning-topics_learning-search-card_search-card&amp;trk=learning-course_review-card-helpful-button" rel="nofollow"> <icon class="review-card__centered-row review-card__action-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5ptx189gjbxrh9wf3ncsehms9" data-svg-class-name="review-card__like-icon"></icon> Helpful </a> <span class="review-card__dot-delimiter">·</span> <a class="review-card__centered-row review-card__action-button" aria-label="Report Lyubomir Kolev’s comment" data-tracking-control-name="learning-course_review-card-report-button" data-tracking-will-navigate href="https://www.linkedin.com/learning-login/?redirect=https%3A%2F%2Fwww%2Elinkedin%2Ecom%2Flearning%2Fbuilding-java-microservices-with-grpc%3Ftrk%3Dlearning-topics_learning-search-card_search-card%26trk%3Dlearning-topics_learning-search-card_search-card&amp;trk=learning-course_review-card-report-button" rel="nofollow"> <icon class="review-card__centered-row review-card__action-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/d04ze1wt0ev8ck8e4ovqk762o" data-svg-class-name="review-card__flag-icon"></icon> Report </a> </div> </div> </div> </div> <!----> </div> </div> </li> <li class="reviews-feed__reviews-list-item"> <div class="review-card"> <div class="base-card relative w-full hover:no-underline focus:no-underline base-card--link base-main-card flex flex-wrap py-2 pr-2 babybear:pr-0 base-main-card--link review-card__entity"> <a class="base-card__full-link absolute top-0 right-0 bottom-0 left-0 p-0 z-[2]" href="https://ua.linkedin.com/in/serhii-pylypenko-b706966?trk=learning-course" data-tracking-control-name="learning-course" data-tracking-will-navigate> <span class="sr-only"> Serhii Pylypenko <!----> </span> </a> <img class="inline-block relative rounded-[50%] w-6 h-6 bg-color-entity-ghost-background" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/9c8pery4andzj6ohjkjp54ma2" data-ghost-classes="bg-color-entity-ghost-background" data-ghost-url="https://static.licdn.com/aero-v1/sc/h/9c8pery4andzj6ohjkjp54ma2" alt="Serhii Pylypenko"> <div class="base-main-card__info self-center ml-1 flex-1 relative break-words papabear:min-w-0 mamabear:min-w-0 babybear:w-full"> <h3 class="base-main-card__title font-sans text-[18px] font-bold text-color-text overflow-hidden "> Serhii Pylypenko <!----> </h3> <h4 class="base-main-card__subtitle body-text text-color-text overflow-hidden"> Java Developer </h4> <!----> <div class="body-text text-color-text-low-emphasis base-main-card__metadata"> <div class="review-card__content"> <div class="review-card__centered-row"> <div class="review-card__star-container"> <span class="star-rating" role="img" aria-label="Rating: 5 out of 5 stars"> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> </span> </div> <span class="review-card__rating"> 5/5 </span> <span class="review-card__date"> February 11, 2024 </span> </div> <div class="review-card__text"> Good practical introduction to gRPC. </div> <div class="review-card__centered-row review-card__actions"> <a class="review-card__centered-row review-card__action-button" aria-label="Serhii Pylypenko’s comment is helpful" data-tracking-control-name="learning-course_review-card-helpful-button" data-tracking-will-navigate href="https://www.linkedin.com/learning-login/?redirect=https%3A%2F%2Fwww%2Elinkedin%2Ecom%2Flearning%2Fbuilding-java-microservices-with-grpc%3Ftrk%3Dlearning-topics_learning-search-card_search-card%26trk%3Dlearning-topics_learning-search-card_search-card&amp;trk=learning-course_review-card-helpful-button" rel="nofollow"> <icon class="review-card__centered-row review-card__action-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5ptx189gjbxrh9wf3ncsehms9" data-svg-class-name="review-card__like-icon"></icon> Helpful </a> <span class="review-card__dot-delimiter">·</span> <a class="review-card__centered-row review-card__action-button" aria-label="Report Serhii Pylypenko’s comment" data-tracking-control-name="learning-course_review-card-report-button" data-tracking-will-navigate href="https://www.linkedin.com/learning-login/?redirect=https%3A%2F%2Fwww%2Elinkedin%2Ecom%2Flearning%2Fbuilding-java-microservices-with-grpc%3Ftrk%3Dlearning-topics_learning-search-card_search-card%26trk%3Dlearning-topics_learning-search-card_search-card&amp;trk=learning-course_review-card-report-button" rel="nofollow"> <icon class="review-card__centered-row review-card__action-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/d04ze1wt0ev8ck8e4ovqk762o" data-svg-class-name="review-card__flag-icon"></icon> Report </a> </div> </div> </div> </div> <!----> </div> </div> </li> <li class="reviews-feed__reviews-list-item"> <div class="review-card"> <div class="base-card relative w-full hover:no-underline focus:no-underline base-card--link base-main-card flex flex-wrap py-2 pr-2 babybear:pr-0 base-main-card--link review-card__entity"> <a class="base-card__full-link absolute top-0 right-0 bottom-0 left-0 p-0 z-[2]" href="https://ie.linkedin.com/in/komal-chopra?trk=learning-course" data-tracking-control-name="learning-course" data-tracking-will-navigate> <span class="sr-only"> Komal Chopra <!----> </span> </a> <img class="inline-block relative rounded-[50%] w-6 h-6 bg-color-entity-ghost-background" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/9c8pery4andzj6ohjkjp54ma2" data-ghost-classes="bg-color-entity-ghost-background" data-ghost-url="https://static.licdn.com/aero-v1/sc/h/9c8pery4andzj6ohjkjp54ma2" alt="Komal Chopra"> <div class="base-main-card__info self-center ml-1 flex-1 relative break-words papabear:min-w-0 mamabear:min-w-0 babybear:w-full"> <h3 class="base-main-card__title font-sans text-[18px] font-bold text-color-text overflow-hidden "> Komal Chopra <!----> </h3> <h4 class="base-main-card__subtitle body-text text-color-text overflow-hidden"> Senior Automation Engineer @ JPMorgan Chase &amp; Co. | Certified Scrum Master| Certified Safe 5 practitioner </h4> <!----> <div class="body-text text-color-text-low-emphasis base-main-card__metadata"> <div class="review-card__content"> <div class="review-card__centered-row"> <div class="review-card__star-container"> <span class="star-rating" role="img" aria-label="Rating: 5 out of 5 stars"> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> <span class="star-rating__icon-container" aria-hidden="true"> <icon class="star-rating__icon star-rating__icon--small " data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cg0ud3t24av7pe8eamnp39hfq"></icon> </span> </span> </div> <span class="review-card__rating"> 5/5 </span> <span class="review-card__date"> January 17, 2024 </span> </div> <div class="review-card__text"> Amazing diversion from basic understanding to practical implementation </div> <div class="review-card__centered-row review-card__actions"> <a class="review-card__centered-row review-card__action-button" aria-label="Komal Chopra’s comment is helpful" data-tracking-control-name="learning-course_review-card-helpful-button" data-tracking-will-navigate href="https://www.linkedin.com/learning-login/?redirect=https%3A%2F%2Fwww%2Elinkedin%2Ecom%2Flearning%2Fbuilding-java-microservices-with-grpc%3Ftrk%3Dlearning-topics_learning-search-card_search-card%26trk%3Dlearning-topics_learning-search-card_search-card&amp;trk=learning-course_review-card-helpful-button" rel="nofollow"> <icon class="review-card__centered-row review-card__action-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5ptx189gjbxrh9wf3ncsehms9" data-svg-class-name="review-card__like-icon"></icon> Helpful </a> <span class="review-card__dot-delimiter">·</span> <a class="review-card__centered-row review-card__action-button" aria-label="Report Komal Chopra’s comment" data-tracking-control-name="learning-course_review-card-report-button" data-tracking-will-navigate href="https://www.linkedin.com/learning-login/?redirect=https%3A%2F%2Fwww%2Elinkedin%2Ecom%2Flearning%2Fbuilding-java-microservices-with-grpc%3Ftrk%3Dlearning-topics_learning-search-card_search-card%26trk%3Dlearning-topics_learning-search-card_search-card&amp;trk=learning-course_review-card-report-button" rel="nofollow"> <icon class="review-card__centered-row review-card__action-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/d04ze1wt0ev8ck8e4ovqk762o" data-svg-class-name="review-card__flag-icon"></icon> Report </a> </div> </div> </div> </div> <!----> </div> </div> </li> </ul> </div> </section> </div> </section> <section class="right-rail papabear:w-right-rail-width papabear:ml-column-gutter mamabear:max-w-[790px] mamabear:px-mobile-container-padding babybear:max-w-[790px] babybear:px-mobile-container-padding"> <section class="table-of-contents mb-4 table-of-contents--with-max-height"> <h2 class="table-of-contents__header"> Contents </h2> <ul class="table-of-contents__list"> <li class="toc-section"> <div class="show-more-less"> <button class="show-more-less__button show-more-less__more-button show-more-less-button " aria-expanded="false" data-tracking-control-name="learning-course_toc-section_show_more"> Introduction <icon class="show-more-less__button--chevron show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cyolgscd0imw2ldqppkrb84vo"></icon> </button> <button class="show-more-less__button show-more-less__less-button show-more-less-button show-more-less__button--hide" aria-expanded="false" data-tracking-control-name="learning-course_toc-section_show_more"> Introduction <icon class="show-more-less__button--chevron show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/4chtt12k98xwnba1nimld2oyg"></icon> </button> <ul data-max-num-to-show="0" class="show-more-less__list show-more-less__list--hide-after-0" data-impression-id="learning-course_toc-section_show-more-less"> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/microservices-with-grpc?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <icon class="table-of-contents__item-status table-of-contents__item-status--unlocked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5jwhkytplzxiejvhzfu0t7m8l" data-svg-class-name="table-of-contents__item-status-svg--unlocked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Microservices with gRPC </div> <div class="table-of-contents__item-duration"> 39s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/what-you-should-know?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <icon class="table-of-contents__item-status table-of-contents__item-status--unlocked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5jwhkytplzxiejvhzfu0t7m8l" data-svg-class-name="table-of-contents__item-status-svg--unlocked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> What you should know </div> <div class="table-of-contents__item-duration"> 43s </div> </div> </a> </li> </ul> <!----> </div> </li> <li class="toc-section"> <div class="show-more-less"> <button class="show-more-less__button show-more-less__more-button show-more-less-button " aria-expanded="false" data-tracking-control-name="learning-course_toc-section_show_more"> 1. Introduction to gRPC <icon class="show-more-less__button--chevron show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cyolgscd0imw2ldqppkrb84vo"></icon> </button> <button class="show-more-less__button show-more-less__less-button show-more-less-button show-more-less__button--hide" aria-expanded="false" data-tracking-control-name="learning-course_toc-section_show_more"> 1. Introduction to gRPC <icon class="show-more-less__button--chevron show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/4chtt12k98xwnba1nimld2oyg"></icon> </button> <ul data-max-num-to-show="0" class="show-more-less__list show-more-less__list--hide-after-0" data-impression-id="learning-course_toc-section_show-more-less"> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/inter-service-communication?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <icon class="table-of-contents__item-status table-of-contents__item-status--unlocked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5jwhkytplzxiejvhzfu0t7m8l" data-svg-class-name="table-of-contents__item-status-svg--unlocked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Inter-service communication </div> <div class="table-of-contents__item-duration"> 5m 57s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/grpc-framework-overview?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <icon class="table-of-contents__item-status table-of-contents__item-status--unlocked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5jwhkytplzxiejvhzfu0t7m8l" data-svg-class-name="table-of-contents__item-status-svg--unlocked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> gRPC framework overview </div> <div class="table-of-contents__item-duration"> 35s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/grpc-framework-features?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> gRPC framework features </div> <div class="table-of-contents__item-duration"> 3m 45s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/grpc-foundations?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> gRPC foundations </div> <div class="table-of-contents__item-duration"> 55s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/http-1-problems?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> HTTP/1 problems </div> <div class="table-of-contents__item-duration"> 2m 16s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/how-is-http-2-better?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> How is HTTP/2 better? </div> <div class="table-of-contents__item-duration"> 3m 8s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/understand-protocol-buffers?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Understand protocol buffers </div> <div class="table-of-contents__item-duration"> 1m 58s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/steps-to-develop-a-grpc-service?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Steps to develop a gRPC service </div> <div class="table-of-contents__item-duration"> 1m 22s </div> </div> </a> </li> </ul> <!----> </div> </li> <li class="toc-section"> <div class="show-more-less"> <button class="show-more-less__button show-more-less__more-button show-more-less-button " aria-expanded="false" data-tracking-control-name="learning-course_toc-section_show_more"> 2. Building Blocks of gRPC <icon class="show-more-less__button--chevron show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cyolgscd0imw2ldqppkrb84vo"></icon> </button> <button class="show-more-less__button show-more-less__less-button show-more-less-button show-more-less__button--hide" aria-expanded="false" data-tracking-control-name="learning-course_toc-section_show_more"> 2. Building Blocks of gRPC <icon class="show-more-less__button--chevron show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/4chtt12k98xwnba1nimld2oyg"></icon> </button> <ul data-max-num-to-show="0" class="show-more-less__list show-more-less__list--hide-after-0" data-impression-id="learning-course_toc-section_show-more-less"> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/using-protocol-buffers?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <icon class="table-of-contents__item-status table-of-contents__item-status--unlocked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5jwhkytplzxiejvhzfu0t7m8l" data-svg-class-name="table-of-contents__item-status-svg--unlocked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Using protocol buffers </div> <div class="table-of-contents__item-duration"> 2m 33s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/using-the-grpc-api-download-utilities?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Using the gRPC API: Download utilities </div> <div class="table-of-contents__item-duration"> 3m 2s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/service-definition-using-protobuffs?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Service definition using protobuffs </div> <div class="table-of-contents__item-duration"> 7m 14s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/generate-stubs-using-protoc?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Generate stubs using protoc </div> <div class="table-of-contents__item-duration"> 7m 35s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/generated-classes-walk-through?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Generated classes walk-through </div> <div class="table-of-contents__item-duration"> 3m 4s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/metadata-and-channels?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <icon class="table-of-contents__item-status table-of-contents__item-status--unlocked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/5jwhkytplzxiejvhzfu0t7m8l" data-svg-class-name="table-of-contents__item-status-svg--unlocked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Metadata and channels </div> <div class="table-of-contents__item-duration"> 1m 55s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/types-of-grpc-calls?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Types of gRPC calls </div> <div class="table-of-contents__item-duration"> 3m 24s </div> </div> </a> </li> </ul> <!----> </div> </li> <li class="toc-section"> <div class="show-more-less"> <button class="show-more-less__button show-more-less__more-button show-more-less-button " aria-expanded="false" data-tracking-control-name="learning-course_toc-section_show_more"> 3. Build User Service Using RPC <icon class="show-more-less__button--chevron show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cyolgscd0imw2ldqppkrb84vo"></icon> </button> <button class="show-more-less__button show-more-less__less-button show-more-less-button show-more-less__button--hide" aria-expanded="false" data-tracking-control-name="learning-course_toc-section_show_more"> 3. Build User Service Using RPC <icon class="show-more-less__button--chevron show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/4chtt12k98xwnba1nimld2oyg"></icon> </button> <ul data-max-num-to-show="0" class="show-more-less__list show-more-less__list--hide-after-0" data-impression-id="learning-course_toc-section_show-more-less"> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/overview-of-order-management-services-built-in-the-course?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Overview of order management services built in the course </div> <div class="table-of-contents__item-duration"> 4m 51s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/create-a-maven-grpc-project?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Create a maven-gRPC project </div> <div class="table-of-contents__item-duration"> 4m 21s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/define-user-proto-and-generate-service-stubs?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Define user.proto and generate service stubs </div> <div class="table-of-contents__item-duration"> 4m 42s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/database-code-setup?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Database code setup </div> <div class="table-of-contents__item-duration"> 4m 27s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/add-database-method-to-get-user-details?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Add database method to get user details </div> <div class="table-of-contents__item-duration"> 7m 37s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/implement-service-stub?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Implement service stub </div> <div class="table-of-contents__item-duration"> 7m 30s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/write-code-to-host-the-user-service?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Write code to host the user service </div> <div class="table-of-contents__item-duration"> 8m 55s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/test-the-user-service?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Test the user service </div> <div class="table-of-contents__item-duration"> 6m 13s </div> </div> </a> </li> </ul> <!----> </div> </li> <li class="toc-section"> <div class="show-more-less"> <button class="show-more-less__button show-more-less__more-button show-more-less-button " aria-expanded="false" data-tracking-control-name="learning-course_toc-section_show_more"> 4. Build Order Management Service Using gRPC <icon class="show-more-less__button--chevron show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cyolgscd0imw2ldqppkrb84vo"></icon> </button> <button class="show-more-less__button show-more-less__less-button show-more-less-button show-more-less__button--hide" aria-expanded="false" data-tracking-control-name="learning-course_toc-section_show_more"> 4. Build Order Management Service Using gRPC <icon class="show-more-less__button--chevron show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/4chtt12k98xwnba1nimld2oyg"></icon> </button> <ul data-max-num-to-show="0" class="show-more-less__list show-more-less__list--hide-after-0" data-impression-id="learning-course_toc-section_show-more-less"> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/define-order-proto-and-generate-stubs?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Define order.proto and generate stubs </div> <div class="table-of-contents__item-duration"> 6m 10s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/add-database-method-to-get-orders?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Add database method to get orders </div> <div class="table-of-contents__item-duration"> 8m 17s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/add-service-method-to-get-order-details?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Add service method to get order details </div> <div class="table-of-contents__item-duration"> 6m 47s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/write-code-to-host-order-service?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Write code to host order service </div> <div class="table-of-contents__item-duration"> 3m 48s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/test-the-order-service-using-the-client?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Test the order service using the client </div> <div class="table-of-contents__item-duration"> 2m 57s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/recap-to-connect-user-and-order-services?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Recap to connect user and order services </div> <div class="table-of-contents__item-duration"> 1m 50s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/write-a-client-to-call-order-service?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Write a client to call order service </div> <div class="table-of-contents__item-duration"> 5m 14s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/call-order-client-from-user-service?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Call order client from user service </div> <div class="table-of-contents__item-duration"> 7m 44s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/test-the-full-flow-of-order-management?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Test the full flow of order management </div> <div class="table-of-contents__item-duration"> 6m 43s </div> </div> </a> </li> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/challenge-implement-add-to-cart-use-case?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Challenge: Implement add-to-cart use case </div> <div class="table-of-contents__item-duration"> 1m 33s </div> </div> </a> </li> </ul> <!----> </div> </li> <li class="toc-section"> <div class="show-more-less"> <button class="show-more-less__button show-more-less__more-button show-more-less-button " aria-expanded="false" data-tracking-control-name="learning-course_toc-section_show_more"> Conclusion <icon class="show-more-less__button--chevron show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cyolgscd0imw2ldqppkrb84vo"></icon> </button> <button class="show-more-less__button show-more-less__less-button show-more-less-button show-more-less__button--hide" aria-expanded="false" data-tracking-control-name="learning-course_toc-section_show_more"> Conclusion <icon class="show-more-less__button--chevron show-more-less-button-icon" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/4chtt12k98xwnba1nimld2oyg"></icon> </button> <ul data-max-num-to-show="0" class="show-more-less__list show-more-less__list--hide-after-0" data-impression-id="learning-course_toc-section_show-more-less"> <li class="toc-item"> <a data-tracking-control-name="learning-course_tocItem" data-tracking-will-navigate href="https://www.linkedin.com/learning/building-java-microservices-with-grpc/building-grpc-microservices-in-java-advanced-concepts?autoplay=true&amp;trk=learning-course_tocItem" class="toc-item__link" aria-current="false"> <span class="a11y-text">(Locked)</span> <icon class="table-of-contents__item-status table-of-contents__item-status--locked" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cfu0devb5o77ym5x8vv0oilfz" data-svg-class-name="table-of-contents__item-status-svg--locked"></icon> <div class="table-of-contents__item-details"> <div class="table-of-contents__item-title"> Building gRPC microservices in Java: Advanced concepts </div> <div class="table-of-contents__item-duration"> 35s </div> </div> </a> </li> </ul> <!----> </div> </li> </ul> </section> <section class="aside-section-container mb-4 subscription-value-props-aside-section"> <h2 class="aside-section-container__title section-title"> What’s included </h2> <!----> <div class="aside-section-container__content break-words"> <ul> <li class="subscription-value-props-aside-section__list-item"> <span class="subscription-value-props-aside-section__value-prop-label">Practice while you learn</span> <span class="subscription-value-props-aside-section__value-prop-sublabel">1 exercise file</span> </li> <li class="subscription-value-props-aside-section__list-item"> <span class="subscription-value-props-aside-section__value-prop-label">Test your knowledge</span> <span class="subscription-value-props-aside-section__value-prop-sublabel">2 quizzes</span> </li> <li class="subscription-value-props-aside-section__list-item"> <span class="subscription-value-props-aside-section__value-prop-label">Learn on the go</span> <span class="subscription-value-props-aside-section__value-prop-sublabel">Access on tablet and phone</span> </li> <!----> </ul> </div> </section> <section class="aside-section-container mb-4 similar-courses-aside-section"> <h2 class="aside-section-container__title section-title"> Similar courses </h2> <!----> <div class="aside-section-container__content break-words"> <ul> <li> <!----> <a href="https://www.linkedin.com/learning/java-microservices-with-graalvm?trk=learning-course_similar-courses" target="_self" data-tracking-control-name="learning-course_similar-courses" data-tracking-will-navigate class="base-card relative w-full hover:no-underline focus:no-underline base-card--link base-aside-card flex my-1.5 hover:show-play-button focus:show-play-button base-aside-card--link aside-learning-course-card"> <!----> <div class="base-aside-card__media flex-shrink-0 mr-0.5 overflow-hidden relative h-[54px] w-[95px] "> <img class="base-aside-card__media-element w-[100px] h-full object-cover" alt data-delayed-url="https://media.licdn.com/dms/image/v2/C4E0DAQFO28wpSykT6A/learning-public-crop_144_256/learning-public-crop_144_256/0/1597243508503?e=2147483647&amp;v=beta&amp;t=EBvzWhomBc51j99avn7mWGZbyxyXEVYN3zTlh3ElidQ"> <div class="aside-learning-course-card__duration duration">1h 36m</div> <icon class="base-aside-card__play-button w-auto play-button overlay-center" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/9n9raq7fmdu241tpsxwodsmcd" data-svg-class-name="base-aside-card__play-button-svg"></icon> </div> <div class="base-aside-card__info self-center pl-0.5 flex flex-col flex-1"> <h3 class="base-aside-card__title font-sans text-md font-bold text-color-text relative"> Java Microservices with GraalVM <!----> </h3> <!----> <!----> <!----> <!----> <!----> </div> <!----> </a> </li> <li> <!----> <a href="https://www.linkedin.com/learning/parallel-and-concurrent-programming-with-java-2?trk=learning-course_similar-courses" target="_self" data-tracking-control-name="learning-course_similar-courses" data-tracking-will-navigate class="base-card relative w-full hover:no-underline focus:no-underline base-card--link base-aside-card flex my-1.5 hover:show-play-button focus:show-play-button base-aside-card--link aside-learning-course-card"> <!----> <div class="base-aside-card__media flex-shrink-0 mr-0.5 overflow-hidden relative h-[54px] w-[95px] "> <img class="base-aside-card__media-element w-[100px] h-full object-cover" alt data-delayed-url="https://media.licdn.com/dms/image/v2/C4E0DAQHQXe2I-T6H3w/learning-public-crop_144_256/learning-public-crop_144_256/0/1568064163804?e=2147483647&amp;v=beta&amp;t=69nSfgevAqVF7O_2Suv9NoOLjmHsNQYxeHa6pJzeMOw"> <div class="aside-learning-course-card__duration duration">2h 14m</div> <icon class="base-aside-card__play-button w-auto play-button overlay-center" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/9n9raq7fmdu241tpsxwodsmcd" data-svg-class-name="base-aside-card__play-button-svg"></icon> </div> <div class="base-aside-card__info self-center pl-0.5 flex flex-col flex-1"> <h3 class="base-aside-card__title font-sans text-md font-bold text-color-text relative"> Parallel and Concurrent Programming with Java 2 <!----> </h3> <!----> <!----> <!----> <!----> <!----> </div> <!----> </a> </li> </ul> </div> </section> <section class="aside-section-container mb-4"> <h2 class="aside-section-container__title section-title"> Download courses </h2> <!----> <div class="aside-section-container__content break-words"> <p>Use your iOS or Android LinkedIn Learning app, and watch courses on your mobile device without an internet connection.</p> <div class="app-links-aside-section__link-container"> <a class="app-links-aside-section__link" href="https://itunes.apple.com/app/apple-store/id1084807225?ls=1&amp;pt=10746&amp;mt=8&amp;ct=learning_course_app_links&amp;trk=learning-course_apple-app-store" data-tracking-control-name="learning-course_apple-app-store" data-tracking-will-navigate rel="noopener noreferrer" target="_blank"> <img alt="Download on the App Store" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/emczv26hz24woii2j4aleyry" height="42px" width="142px"> </a> <a class="app-links-aside-section__link" href="https://play.google.com/store/apps/details?id=com.linkedin.android.learning&amp;referrer=utm_source%3Dlinkedinlearning%26utm_medium%3DmobileWeb%26utm_campaign%3Dlearning_guest&amp;ct=learning_course_app_links&amp;trk=learning-course_google-play-store" data-tracking-control-name="learning-course_google-play-store" data-tracking-will-navigate rel="noopener noreferrer" target="_blank"> <img alt="Get it on Google Play" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/535kqf5rsexfx0lucb3t6palb" height="42px" width="142px"> </a> </div> </div> </section> </section> </main> <div class="pre-footer "> <section class="core-section-container my-3 price-disclaimer"> <!----> <!----> <!----> <div class="core-section-container__content break-words"> <p class="price-disclaimer__copy"> <sup class="price-disclaimer__copy--sup">*</sup>Price may change based on profile and billing country information entered during Sign In or Registration </p> </div> </section> <section class="tw-linkster bg-cool-gray-20 browse-map" data-impression-id="learning-course_linkster" data-js-module-id="linkster"> <div class="max-w-screen-content-max-w w-full flex justify-between my-0 mx-auto mamabear:px-3 babybear:px-2 babybear:flex-col"> <div class="flex-1 w-1/2 pt-2 pr-4 pb-4 pl-0 babybear:pb-2 babybear:w-full babybear:border-b-1 babybear:border-solid babybear:border-color-border-low-emphasis babybear:last:border-b-0"> <h3 class="text-md font-bold text-color-text leading-open"> Explore Business Topics </h3> <ul class="my-1"> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/business-analysis-and-strategy?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Business Analysis and Strategy </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/business-software-and-tools?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Business Software and Tools </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/career-development-5?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Career Development </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/customer-service-3?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Customer Service </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/diversity-equity-and-inclusion-dei?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Diversity, Equity, and Inclusion (DEI) </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/finance-and-accounting?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Finance and Accounting </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/human-resources-3?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Human Resources </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/leadership-and-management?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Leadership and Management </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/marketing-2?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Marketing </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/professional-development?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Professional Development </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/project-management?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Project Management </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/sales-3?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Sales </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/small-business-and-entrepreneurship?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Small Business and Entrepreneurship </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/training-and-education?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Training and Education </a> </li> </ul> <a class="link tw-linkster-general-link" aria-label="See all business courses" href="https://www.linkedin.com/learning/topics/business?trk=learning-course_browsemap_general-link" data-tracking-control-name="learning-course_browsemap_general-link" data-tracking-will-navigate> See all </a> </div> <div class="flex-1 w-1/2 pt-2 pr-4 pb-4 pl-0 babybear:pb-2 babybear:w-full babybear:border-b-1 babybear:border-solid babybear:border-color-border-low-emphasis babybear:last:border-b-0"> <h3 class="text-md font-bold text-color-text leading-open"> Explore Creative Topics </h3> <ul class="my-1"> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/aec?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> AEC </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/animation-and-illustration?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Animation and Illustration </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/audio-and-music?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Audio and Music </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/graphic-design?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Graphic Design </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/motion-graphics-and-vfx?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Motion Graphics and VFX </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/photography-2?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Photography </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/product-and-manufacturing?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Product and Manufacturing </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/user-experience?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> User Experience </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/2015-54?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Video </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/visualization-and-real-time?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Visualization and Real-Time </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/web-design?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Web Design </a> </li> </ul> <a class="link tw-linkster-general-link" aria-label="See all creative courses" href="https://www.linkedin.com/learning/topics/creative?trk=learning-course_browsemap_general-link" data-tracking-control-name="learning-course_browsemap_general-link" data-tracking-will-navigate> See all </a> </div> <div class="flex-1 w-1/2 pt-2 pr-4 pb-4 pl-0 babybear:pb-2 babybear:w-full babybear:border-b-1 babybear:border-solid babybear:border-color-border-low-emphasis babybear:last:border-b-0"> <h3 class="text-md font-bold text-color-text leading-open"> Explore Technology Topics </h3> <ul class="my-1"> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/artificial-intelligence?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Artificial Intelligence (AI) </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/cloud-computing-5?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Cloud Computing </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/security-3?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Cybersecurity </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/data-science?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Data Science </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/database-management?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Database Management </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/devops?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> DevOps </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/hardware?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Hardware </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/it-help-desk-5?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> IT Help Desk </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/mobile-development?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Mobile Development </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/network-and-system-administration?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Network and System Administration </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/software-development?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Software Development </a> </li> <li class="tw-link-column-item"> <a class="link tw-linkster-link" href="https://www.linkedin.com/learning/topics/web-development?trk=learning-course_browsemap_link" data-js-module-id="link-column-link" data-tracking-control-name="learning-course_browsemap_link" data-tracking-will-navigate> Web Development </a> </li> </ul> <a class="link tw-linkster-general-link" aria-label="See all technology courses" href="https://www.linkedin.com/learning/topics/technology?trk=learning-course_browsemap_general-link" data-tracking-control-name="learning-course_browsemap_general-link" data-tracking-will-navigate> See all </a> </div> </div> </section> </div> <footer class="li-footer bg-transparent w-full "> <ul class="li-footer__list flex flex-wrap flex-row items-start justify-start w-full h-auto min-h-[50px] my-[0px] mx-auto py-3 px-2 papabear:w-[1128px] papabear:p-0"> <li class="li-footer__item font-sans text-xs text-color-text-low-emphasis flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto"> <span class="sr-only">LinkedIn</span> <icon class="li-footer__copy-logo text-color-logo-brand-alt inline-block self-center h-[14px] w-[56px] mr-1" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/e12h2cd8ac580qen9qdd0qks8"></icon> <span class="li-footer__copy-text flex items-center">&copy; 2024</span> </li> <li class="li-footer__item font-sans text-xs text-color-text-low-emphasis flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto"> <a class="li-footer__item-link flex items-center font-sans text-xs font-bold text-color-text-low-emphasis hover:text-color-link-hover focus:text-color-link-focus" href="https://about.linkedin.com?trk=d_learning_course_guest_footer-about" data-tracking-control-name="d_learning_course_guest_footer-about" data-tracking-will-navigate> About </a> </li> <li class="li-footer__item font-sans text-xs text-color-text-low-emphasis flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto"> <a class="li-footer__item-link flex items-center font-sans text-xs font-bold text-color-text-low-emphasis hover:text-color-link-hover focus:text-color-link-focus" href="https://www.linkedin.com/accessibility?trk=d_learning_course_guest_footer-accessibility" data-tracking-control-name="d_learning_course_guest_footer-accessibility" data-tracking-will-navigate> Accessibility </a> </li> <li class="li-footer__item font-sans text-xs text-color-text-low-emphasis flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto"> <a class="li-footer__item-link flex items-center font-sans text-xs font-bold text-color-text-low-emphasis hover:text-color-link-hover focus:text-color-link-focus" href="https://www.linkedin.com/legal/user-agreement?trk=d_learning_course_guest_footer-user-agreement" data-tracking-control-name="d_learning_course_guest_footer-user-agreement" data-tracking-will-navigate> User Agreement </a> </li> <li class="li-footer__item font-sans text-xs text-color-text-low-emphasis flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto"> <a class="li-footer__item-link flex items-center font-sans text-xs font-bold text-color-text-low-emphasis hover:text-color-link-hover focus:text-color-link-focus" href="https://www.linkedin.com/legal/privacy-policy?trk=d_learning_course_guest_footer-privacy-policy" data-tracking-control-name="d_learning_course_guest_footer-privacy-policy" data-tracking-will-navigate> Privacy Policy </a> </li> <!----> <li class="li-footer__item font-sans text-xs text-color-text-low-emphasis flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto"> <a class="li-footer__item-link flex items-center font-sans text-xs font-bold text-color-text-low-emphasis hover:text-color-link-hover focus:text-color-link-focus" href="https://www.linkedin.com/legal/cookie-policy?trk=d_learning_course_guest_footer-cookie-policy" data-tracking-control-name="d_learning_course_guest_footer-cookie-policy" data-tracking-will-navigate> Cookie Policy </a> </li> <li class="li-footer__item font-sans text-xs text-color-text-low-emphasis flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto"> <a class="li-footer__item-link flex items-center font-sans text-xs font-bold text-color-text-low-emphasis hover:text-color-link-hover focus:text-color-link-focus" href="https://www.linkedin.com/legal/copyright-policy?trk=d_learning_course_guest_footer-copyright-policy" data-tracking-control-name="d_learning_course_guest_footer-copyright-policy" data-tracking-will-navigate> Copyright Policy </a> </li> <li class="li-footer__item font-sans text-xs text-color-text-low-emphasis flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto"> <a class="li-footer__item-link flex items-center font-sans text-xs font-bold text-color-text-low-emphasis hover:text-color-link-hover focus:text-color-link-focus" href="https://brand.linkedin.com/policies?trk=d_learning_course_guest_footer-brand-policy" data-tracking-control-name="d_learning_course_guest_footer-brand-policy" data-tracking-will-navigate> Brand Policy </a> </li> <li class="li-footer__item font-sans text-xs text-color-text-low-emphasis flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto"> <a class="li-footer__item-link flex items-center font-sans text-xs font-bold text-color-text-low-emphasis hover:text-color-link-hover focus:text-color-link-focus" href="https://www.linkedin.com/psettings/guest-controls?trk=d_learning_course_guest_footer-guest-controls" data-tracking-control-name="d_learning_course_guest_footer-guest-controls" data-tracking-will-navigate> Guest Controls </a> </li> <li class="li-footer__item font-sans text-xs text-color-text-low-emphasis flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto"> <a class="li-footer__item-link flex items-center font-sans text-xs font-bold text-color-text-low-emphasis hover:text-color-link-hover focus:text-color-link-focus" href="https://www.linkedin.com/legal/professional-community-policies?trk=d_learning_course_guest_footer-community-guide" data-tracking-control-name="d_learning_course_guest_footer-community-guide" data-tracking-will-navigate> Community Guidelines </a> </li> <!----> <li class="li-footer__item font-sans text-xs text-color-text-low-emphasis flex flex-shrink-0 justify-start p-1 relative w-50% papabear:justify-center papabear:w-auto"> <div class="collapsible-dropdown collapsible-dropdown--footer collapsible-dropdown--up flex items-center relative hyphens-auto language-selector z-2"> <!----> <ul class="collapsible-dropdown__list hidden container-raised absolute w-auto overflow-y-auto flex-col items-stretch z-1 bottom-[100%] top-auto" role="menu" tabindex="-1"> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="العربية (Arabic)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-ar_AE" data-locale="ar_AE" role="menuitem" lang="ar_AE"> العربية (Arabic) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="বাংলা (Bangla)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-bn_IN" data-locale="bn_IN" role="menuitem" lang="bn_IN"> বাংলা (Bangla) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Čeština (Czech)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-cs_CZ" data-locale="cs_CZ" role="menuitem" lang="cs_CZ"> Čeština (Czech) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Dansk (Danish)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-da_DK" data-locale="da_DK" role="menuitem" lang="da_DK"> Dansk (Danish) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Deutsch (German)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-de_DE" data-locale="de_DE" role="menuitem" lang="de_DE"> Deutsch (German) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Ελληνικά (Greek)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-el_GR" data-locale="el_GR" role="menuitem" lang="el_GR"> Ελληνικά (Greek) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="English (English) selected" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link--selected" data-tracking-control-name="language-selector-en_US" data-locale="en_US" role="menuitem" lang="en_US"> <strong>English (English)</strong> </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Español (Spanish)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-es_ES" data-locale="es_ES" role="menuitem" lang="es_ES"> Español (Spanish) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="فارسی (Persian)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-fa_IR" data-locale="fa_IR" role="menuitem" lang="fa_IR"> فارسی (Persian) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Suomi (Finnish)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-fi_FI" data-locale="fi_FI" role="menuitem" lang="fi_FI"> Suomi (Finnish) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Français (French)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-fr_FR" data-locale="fr_FR" role="menuitem" lang="fr_FR"> Français (French) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="हिंदी (Hindi)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-hi_IN" data-locale="hi_IN" role="menuitem" lang="hi_IN"> हिंदी (Hindi) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Magyar (Hungarian)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-hu_HU" data-locale="hu_HU" role="menuitem" lang="hu_HU"> Magyar (Hungarian) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Bahasa Indonesia (Indonesian)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-in_ID" data-locale="in_ID" role="menuitem" lang="in_ID"> Bahasa Indonesia (Indonesian) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Italiano (Italian)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-it_IT" data-locale="it_IT" role="menuitem" lang="it_IT"> Italiano (Italian) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="עברית (Hebrew)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-iw_IL" data-locale="iw_IL" role="menuitem" lang="iw_IL"> עברית (Hebrew) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="日本語 (Japanese)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-ja_JP" data-locale="ja_JP" role="menuitem" lang="ja_JP"> 日本語 (Japanese) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="한국어 (Korean)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-ko_KR" data-locale="ko_KR" role="menuitem" lang="ko_KR"> 한국어 (Korean) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="मराठी (Marathi)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-mr_IN" data-locale="mr_IN" role="menuitem" lang="mr_IN"> मराठी (Marathi) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Bahasa Malaysia (Malay)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-ms_MY" data-locale="ms_MY" role="menuitem" lang="ms_MY"> Bahasa Malaysia (Malay) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Nederlands (Dutch)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-nl_NL" data-locale="nl_NL" role="menuitem" lang="nl_NL"> Nederlands (Dutch) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Norsk (Norwegian)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-no_NO" data-locale="no_NO" role="menuitem" lang="no_NO"> Norsk (Norwegian) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="ਪੰਜਾਬੀ (Punjabi)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-pa_IN" data-locale="pa_IN" role="menuitem" lang="pa_IN"> ਪੰਜਾਬੀ (Punjabi) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Polski (Polish)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-pl_PL" data-locale="pl_PL" role="menuitem" lang="pl_PL"> Polski (Polish) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Português (Portuguese)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-pt_BR" data-locale="pt_BR" role="menuitem" lang="pt_BR"> Português (Portuguese) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Română (Romanian)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-ro_RO" data-locale="ro_RO" role="menuitem" lang="ro_RO"> Română (Romanian) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Русский (Russian)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-ru_RU" data-locale="ru_RU" role="menuitem" lang="ru_RU"> Русский (Russian) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Svenska (Swedish)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-sv_SE" data-locale="sv_SE" role="menuitem" lang="sv_SE"> Svenska (Swedish) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="తెలుగు (Telugu)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-te_IN" data-locale="te_IN" role="menuitem" lang="te_IN"> తెలుగు (Telugu) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="ภาษาไทย (Thai)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-th_TH" data-locale="th_TH" role="menuitem" lang="th_TH"> ภาษาไทย (Thai) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Tagalog (Tagalog)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-tl_PH" data-locale="tl_PH" role="menuitem" lang="tl_PH"> Tagalog (Tagalog) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Türkçe (Turkish)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-tr_TR" data-locale="tr_TR" role="menuitem" lang="tr_TR"> Türkçe (Turkish) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Українська (Ukrainian)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-uk_UA" data-locale="uk_UA" role="menuitem" lang="uk_UA"> Українська (Ukrainian) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="Tiếng Việt (Vietnamese)" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-vi_VN" data-locale="vi_VN" role="menuitem" lang="vi_VN"> Tiếng Việt (Vietnamese) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="简体中文 (Chinese (Simplified))" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-zh_CN" data-locale="zh_CN" role="menuitem" lang="zh_CN"> 简体中文 (Chinese (Simplified)) </button> </li> <li class="language-selector__item" role="presentation"> <!-- Adding aria-label to both the li and the button because screen reader focus goes to button on desktop and li on mobile--> <button aria-label="正體中文 (Chinese (Traditional))" class="font-sans text-xs link block py-[5px] px-2 w-full hover:cursor-pointer hover:bg-color-action hover:text-color-text-on-dark focus:bg-color-action focus:text-color-text-on-dark language-selector__link !font-regular" data-tracking-control-name="language-selector-zh_TW" data-locale="zh_TW" role="menuitem" lang="zh_TW"> 正體中文 (Chinese (Traditional)) </button> </li> <!----> </ul> <button class="language-selector__button select-none relative pr-2 font-sans text-xs font-bold text-color-text-low-emphasis hover:text-color-link-hover hover:cursor-pointer focus:text-color-link-focus focus:outline-dotted focus:outline-1" aria-expanded="false" data-tracking-control-name="footer-lang-dropdown_trigger"> <span class="language-selector__label-text mr-0.5 break-words"> Language </span> <icon class="language-selector__label-chevron w-2 h-2 absolute top-0 right-0" data-delayed-url="https://static.licdn.com/aero-v1/sc/h/cyolgscd0imw2ldqppkrb84vo"></icon> </button> </div> </li> </ul> <!----> </footer> <script src="https://static.licdn.com/aero-v1/sc/h/eh08muqvrde4h3hc6koyij5ti" async></script> <!----> <script src="https://static.licdn.com/aero-v1/sc/h/awgwgu3fg49q0tcvd24ku87qq" async defer></script> <script data-delayed-url="https://static.licdn.com/aero-v1/sc/h/81wy0f4hfrhoilx9eqdwg202z" data-module-id="media-player"></script> <code id="trackingData" style="display: none"><!--{"hashedCourseId":"a0SIVLOIPkh2Y5ta+N6AWB+gDvb7KgDsWWIrIIg0ayo=","urn":"urn:li:lyndaCourse:2876073","totalPrice":{"currencyCode":"HKD","amount":"299.99"}}--></code> <code id="alcOnlyData" style="display: none"><!--{"isAlcOnly":false,"canPurchaseCourse":true}--></code> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10