![Jakob Jenkov](/img/default-banner.jpg)
- Видео 80
- Просмотров 3 167 664
Jakob Jenkov
Дания
Добавлен 3 мар 2007
Hi, I make videos about software development related topics like Java, web development etc. Occassionally I'll drop a video or two about career related issues too. Oh, I also run the tutorial website tutorials.jenkov.com .
I try to cover each topic in reasonable depth. My own experience has been, that the deeper my understanding of topics within software development is - the better and faster a developer I become.
I started programming around 1987 (around age 12) on the C128 - in C128 Basic - then on the Amiga 500 in AMOS and Assembler, then later PC and C. I started working with software as job from 1998 as web dev, and from 1999 as Java + web dev, so I've been in the game a long time :-)
From around 2000 and forward I have mostly been working as a freelance, onsite consultant with Java, web and distributed systems deelopment. I love being self employed - but it's a lot of work.
I try to cover each topic in reasonable depth. My own experience has been, that the deeper my understanding of topics within software development is - the better and faster a developer I become.
I started programming around 1987 (around age 12) on the C128 - in C128 Basic - then on the Amiga 500 in AMOS and Assembler, then later PC and C. I started working with software as job from 1998 as web dev, and from 1999 as Java + web dev, so I've been in the game a long time :-)
From around 2000 and forward I have mostly been working as a freelance, onsite consultant with Java, web and distributed systems deelopment. I love being self employed - but it's a lot of work.
Designing for Scalability vs Performance
When the load on a system gets close to the capacity of that system - you will typically have to address that situation by increasing the capacity of that system.
You can increase the capacity of a system in two ways: Via scaling - or via performance optimization.
In this video I discuss the different implications for your system and its operational cost depending how you decide to address a capacity issue (via scaling or via performance optimization).
You can increase the capacity of a system in two ways: Via scaling - or via performance optimization.
In this video I discuss the different implications for your system and its operational cost depending how you decide to address a capacity issue (via scaling or via performance optimization).
Просмотров: 742
Видео
Java Generics
Просмотров 2,8 тыс.Месяц назад
Java Generics enable us to gain type safety in situations where classes and methods that are designed to be able to work with any type would otherwise be designed to work with Object instances. For instance, without Java Generics the Java List, Java Set, Java Map etc. interfaces would all be working on Object instances. With Java Generics you can create List, Set or Map instances that work on s...
Java ForkJoinPool
Просмотров 4,8 тыс.4 месяца назад
The Java ForkJoinPool helps you break down large tasks into smaller subtasks which can be executed in parallel using all, or some, of the CPU cores available in your computer. The Java ForkJoinPool thus helps you implement a fork and join type of work break down and parallelism. The Java ForkJoinPool implements a work stealing algorithm which further helps utilize the CPU cores in your computer...
P2P Networks Introduction
Просмотров 2,6 тыс.5 месяцев назад
Peer-to-peer networks, AKA P2P networks, are networks of computer communicating without a central server. Peers are different from clients and servers in that clients and servers have different roles, whereas peers typically all have the same roles - each acting as both client of, and server to, other peers in the P2P network. There are multiple P2P network topologies - such as unstructured P2P...
Conscious Software Design
Просмотров 2,2 тыс.7 месяцев назад
Conscious Software Design is my personal software design philsophy which I have adopted over 25 years of professional software development. Many developers with 10 years of software development experience begin to develop differently - and in this video I explain why I believe that is. Software Design - Playlist: ruclips.net/p/PLL8woMHwr36HWMaOTIiWNf_fYYkZCHPxo&feature=shared Junior, Senior and...
Structural Software Design
Просмотров 2,4 тыс.Год назад
Structural software design is about how you structure your software internally. There are three core elements to structural design which I cover in this video. I also give an example of how a simple functional requirement can be implemented using three different designs. Twitter: @jjenkov LinkedIn: www.linkedin.com/in/jakob-jenkov-4a3a8/ Structural Software Design - Text: jenkov.com/tutorials/s...
Software Design Goals
Просмотров 1,6 тыс.Год назад
Software design goals are what we are trying to achieve when we apply common software design techniques in our day-to-day software development work. In this video I cover a set of the most common software design goals, and encourage you to raise your awareness of the connection between the design decisions you make, and the design goals you are trying to achieve via those decisions. Chapters: 0...
Software Design Introduction
Просмотров 6 тыс.Год назад
Great software design makes a big difference in how easy that software is to use, develop, test etc. Yet, software design is hard to do well. One of the challenges is, that I don't believe we always think constructively about software design. We may sometimes just follow a recipe someone else made, rather than do our own design thinking. In this introduction to software design I lay out some of...
Designing for Performance - is Not as Hard as You Think !
Просмотров 1,9 тыс.Год назад
You have probably heard the slogan "Premature Optimization is the Root of All Evil ! " - but over many years of working with performance optimization I have come to believe this is misleading! #shorts #short
The Compound Performance Penalty Problem
Просмотров 1,4 тыс.Год назад
The compound performance penalty problem occurs when performance inefficiencies across multiple layers compound into a total, larger performance penalty. This penalty is often paid by applications that use a lot of inefficient frameworks and libraries. The larger the code base and the more external libraries are used, the larger the probability is of compound performance penalties. Software Per...
Java ExecutorService Using Virtual Threads
Просмотров 9 тыс.Год назад
With the addition of Virtual Threads to Java, a special Java ExecutorService implementation was also added which executes every single task submitted to it using a separate virtual thread. In this video I show how to create and use a Java ExecutorService using virtual threads internally. Twitter: @jjenkov LinkedIn: www.linkedin.com/in/jakob-jenkov-4a3a8/ If you are new to Java Virtual Threads -...
Java Virtual Threads
Просмотров 37 тыс.Год назад
Java Virtual Threads are a new kind of lightweight threads that were added to Java in Java 19. In this video I describe what Java virtual threads are, how virtual threads are different from the existing platform threads, and show you a quick example of how to use virtual threads. Twitter: @jjenkov LinkedIn: www.linkedin.com/in/jakob-jenkov-4a3a8/ Java Virtual Threads - Text version: jenkov.com/...
Thread Signaling in Java
Просмотров 12 тыс.Год назад
Java has a set of thread signaling features that enable one Java thread to coordinate its actions with another. These basic thread signaling features are provided via the Object class wait() , notify() and notifyAll() methods. When implementing thread signaling in Java you need to be aware of the problem of missed signals and spurious wakeups. I cover both in this video too. Chapters: 0:00 Java...
My 9 + 1 Core Software Performance Optimization Principles
Просмотров 6 тыс.2 года назад
When working with software performance optimization, I use these 9 1 core principles as a checklist to make sure I have looked through the performance gain opportunities reasonably thoroughly. The performance difference between an unoptimized and a fully optimized software system can be a factor 10 to 100. Even a factor 1.000 if the right conditions are present. Better performing software means...
Thread Congestion in Java
Просмотров 9 тыс.2 года назад
Thread congestion can occur when two or more threads are trying to access the same, guarded data structure at the same time. By "guarded" I mean that the data structure is guarded using synchronized blocks or a concurrent data structure (Lock, BlockingQueue etc.) so that the data structure is thread safe. The resulting thread congestion means that the threads trying to access the shared data st...
Single-threaded and Same-threaded designs
Просмотров 12 тыс.2 года назад
Single-threaded and Same-threaded designs
Polymorph Smart Media Platform - Introduction
Просмотров 1,8 тыс.2 года назад
Polymorph Smart Media Platform - Introduction
CPU Cache Coherence + Java Concurrency
Просмотров 18 тыс.3 года назад
CPU Cache Coherence Java Concurrency
Producer Consumer Pattern - With Java Example
Просмотров 27 тыс.3 года назад
Producer Consumer Pattern - With Java Example
Checking to see if current thread is queued isn't it unnecessary since the thread will be blocked trying to get the lock. At (26 min)
Java sucks sometimes really hard!
hey good well explication thanks
Thanks a lot, still very helpful video in 2024 🙏❤
Incredible explanation. Instant sub!
@Jakob, I see that you use notify in your examples for BoundedSemaphore. Is it possible that one consumer can wake up another consumer instead of waking up the producer ? Same goes with producer too. Any reason why notifyall is not used ? I was thinking notifyall wouldnt cause the problem of consumer not waking up another consumer.
Hello. I have a big problem with your code javafx in the WebView example. It compiles correctly, but the window stays always blank when I launch the code with java 23, and I don't understand why ! can you help me ?
Man i'm loving it all of your content!! You're giving me the possibility to become a better software engineer. Thanks a lot <3
This is the best tutorial ever. Thank you for doing this!
Jakob, Thanks for your time, effort and a great way of teaching other's!
You are welcome !! 😊😊
Thanks, this is amazing explanation. Do you have an example of using this with the Thread Executor Service? How that is advantageous?
I have another video about it in the playlist... 😊
This content is gold. After almost 8 years, I keep on knowing things that I did not know before, not just this particular video but the whole series. Thank you, Jacob.
You are most welcome !! 😊😊
Does the textual version include all the informations that RUclips course have(I mean for entire JAVA THREADS, not just for this episode)? I prefer textual version more but I dont want to miss any bit of what YT course gives. Thanks for the answer!
Usually the articles and videos have the same amount of details 😊
@@JakobJenkov thank you 👍🏻
Dude, i refer to your java portal quite often! Didnt know you have youtube channel. Instant subscribe
Thank you! :-) ... I don't have nearly as many videos as I have textual tutorials, and it will probably stay that way, but I keep making videos from time to time :-)
@@JakobJenkov understandable. Unless there's some cool trick or technique or gotchas to show , your textual blogs works just fine :)
Best explanation I have ever seen...
Thank you very much !! :-)
Dat gelooft toch geen kat.
Thanks a lot! Top notch explanation and examples.
Thank you! :-)
you're awesome.
Thank you ! :-)
Thanks, Jakob. Very few people really cover this subject. Can you please cover this topic in more detail?
I have a playlist about performance optimization - but it's not yet so big: ruclips.net/video/ULlFWomaPVw/видео.html
Thanks for your videos! 🙏
You are welcome! :-)
THX!
You are welcome 😊
Line No: 56 elements.add(new Object()); you forgot mention why it won't work. Even though the Object is super class of Parent. why it gives error?
Do you have a timestamp?
51:20 you're explaining line No: 55. And thats it the video ended.
So using Rust is for squizing max from hardware. e.g. when other blockchains scale out, Solana keeps running on a single node on Rust
Rust, D, C, C++ etc. all give good performance, but your internal design is important too. You can also get decent performance out of Java and C#
System design topic?
Yes, I have a playlist about Software Design too 😊 ... building it slowly. Next video in that list will be more detailed, and more concrete / applicable 😊
Thanks
You are welcome !! 😊
wow
top 3 java youtuber, always the best
Thank you 😊
thanks jakob. verry good as always. one last thing maybe can be added here is to generic types can extends many other type in the same time (i found that the sysntax is verry wierd in the begining ''&") example: class MyClass<T extends Number & Comparable>
True, there are even more advanced possibilities... though I don't see them used much.
You explain so well. I have been your follower since college, and now I am a software engineer. Great work, really appreciate 😊
Thank you very much for your kind words :-) I am happy that I have been able to help you! :-)
One Like and One Comments For my Brother . Thanks
Thank you ! :-)
i dont get the part where u said volatile keyword makes the variable directly read or written from the memoty, and also makes the non volatile variable to be fetched from the main memory..is it like that
That is explained in more detail in other videos too. For instance, in my video about the Java Memory Model, the Java Happens Before Guarantee and Java Synchronized.
4000 like is by me. 😁😁
:-D ... Thanks! :-D
The MOST Detailed Videos on Multi-threading & Concurrency in JAVA by PROFESSOR Synchronized, a.k.a, @JakobJenkov. These videos SYNC ur Brains on the Most recent concepts of Java threads as of Java 19 😃😃
Thank you very much for your kind and enthusiastic words 😊😊
Welcome back sir !
Thank you ! :-)
Thank you so much for creating such wonderful video. Explained very well, thorough and detailed God Level !!!. Best video series I have ever watched on multithreading topic
Thank you very much! :-) ... I am happy the video series is helpful! :-)
Welcome back! Always great content from you
Thank you very much! :-)
Great video Jabkob! This parrot wants to learn more. Looking forward to more interesting java videos. (^^)
Thank you!! ... :-)
if possible please refresh multithreading videos. Great to see you back👍
Thanks! ... most of the Java Concurrency topics are still quite "up-to-date" - meaning the topics they cover have not changed that much. New features have been added though, such as Structured Concurrency. I will try to cover them in the future. :-)
The ultimate boss is back
:-D
Thanks Jakob, explaination is simple and crisp.
Thank you ! :-) ... Glad it's understandable! :-) Java Generics can be a bit tricky to explain!
Thanks sir
You are very welcome :-)
Gratitude!🙂🙏🏻
You are welcome! :-)
PLS continue with the "conscious design" series!
I will ! ... next topic in that series is about Compositional Software Design. I am still working on the textual version of that tutorial (to make sure the ideas are coherent). Once that is reasonably ready, I will begin the video version :-)
Greeting dude!
Greetings! :-)
First
That was fast !! :-)