@@michelchaghoury9629 Yes darling, at what starting level would you prefer it to be at sweetheart. Should the tutorial start at beginner level honey? Or should it be at intermediate level my sugar pumpkin pie? Baby please reply so we can make an arrangement for you okay love?
I'm a professional Java developer for years and I can say, without hesitation that Java is definitely not dead. Its still largely adopt in IT services. The community is absolutely huge. Also, the last release of Spring 6, project Loom and so on are very excited for us. But if I could recommend something for beginners, just focus on well established languages instead of trending ones. I mean, Java, Javascript, Typescript, Python are the most popular OOP languages. I would not recommend to learn new languages such as Rust or Golang for beginners cause the learning curve may be to complicated for you and to be honest they are not many companies compared to OOP languages which hires developers ;) BTW : thanks for you content @Amigoscode, its perfect as usual ;)
@@ProMinecraftSprite I don't know exactly what you're talking about but if you think about AI like ChatGPT. I use it every day, and after 1 month of daily usage clearly there are still lots of issues with the generated code. But its the most overpowered, game changer tool I ever used for boring or complicated tasks such as writing documentation, reverse engineering of legacy applications, writing postman tests, sql, elasticsearch or mongo queries. I'm sure that it will not replace developer (or maybe in many years) but it allow us to be productive as f*ck in some cases.
I would highly recommend learning Rust and Go. Java has been trending down since 2016 in usage. Go especially is way more simple than Java and way easier to learn. I think we are going to see Go and Rust dominate the landscape in the next 5-10 years. They are just objectively better in every way. They are way more performant, have a better type system, they have a cleaner syntax, and their dependency management system is way better.
Java acts like a Rosetta stone for programming languages. Learning Java equips you to use any programming languages without even the need to learn them. You simply need a basic cheat sheet for that language in front of you and you can take off.
Not so much for the functional languages brother...you could call it a rosetta stone for OO languages. But abstraction is a theme found almost everywhere.
I worked my first job in Java at a database company and later also using it in the backend at Google, and it's definitely still thriving. It might not be the hot thing that all startups are defaulting to using it today, but it definitely 1. provides a great foundation for OOP/type-based language (I would actually prefer to hire someone who has past Java experience vs just JS experience) 2. is still relevant in a large number of big (and small) companies who choose to use it.
I am a Java backend developer (cloud, microservices) and there is still plenty of work for me. I am now on working on big project for next 2-3 years with this stack. If you want to learn Java then the market demand is - Java, Spring Boot, Docker, Kubernetes, AWS, Hexagonal architecture, microservices… Plenty of work and demand for this on European market. If you like frontend then pick also Javascript, React and Angular. If you know Java and Javascript you can be fullstack developer…
@@themadmen1717 I don’t know… I think book “Thinking in Java” is still valid. I use it when I forget something… Check what Amigoscode has to offer :) Find a good course on UA-cam that would be about “Object oriented programming with Java”. Not just learning Java… Find something yourself that would fit your style. Then learn Data Structures and Algorithms in Java. Maybe something like AlgoExpert or Log2Base2 sites. Or courses for free on UA-cam. And Amigoscode maybe :) I used AlgoExpert and it was good. Then I used course Spring Framework master class on Udemy. First try what is for free. Try different people, courses etc and find your style to learn… Once you find best way you can learn then try some payed courses.
"Learn Java and the rest of the programming languages are going to be easy" that I can say is true. I'm coming from a JavaScript environment and I realized I've missed a lot of fundamental concepts like design principles, best practices and most of the OOP concepts as JS is more like code however you like.
@@DnKZone yeah I think Java is a good choice for that. One reason is, it is well documented and you'll find many experienced individuals who'll guide you and also many of the design principles are well implemented in java.
@@selahadinjemal7138 You just motivated me, thanks! Can you tell me the learning path you are following? Because I am all confused, should I learn Kotlin and go for App development or learn Backend systems development. I am also confused, what does this Backend Systems means? I am also doing web development for some years now. I also think I need to acquire software industry knowledge for long-term career.
"Best practices" are not even good, you technically can write that exact code in Javascript or Python, like in Java, but you don't have to. In Java you just don't have a choice, you locked in endless OOP brainrot with boilerplates.
I was taught java in highschool and learned C in college (and use for my job), and although I don't really like programming in java, the concepts that java taught me have helped me throughout my career. Knowing both java and C I got a very deep understanding of how all of this works.
I was previously working with python and JavaScript but learning java has cemented my OOP concepts and made me understand the difficult parts in JavaScript and python. I totally agree with Amigos code that learning java makes you learn other OOP languages easily
Except...that Java, Python or JavaScript has a submediocre implementation of proper OOP. Smalltalk remains the best OOP implementation, the original one based on messages where the OO part is the lesser concept.
Just because Java enforces you to write code in classes, you're not writing better code. Its quite the opposite. Most of the time you're using wrong tool(OOP) for the task, and have to cope with all SOLID workarounds.
Java is just thriving just as it has been for 10 years. All the big companies who started with a more trendier language eventually migrate over. And Spring Boot is just 🤩
@@konga8165 Not objective, you’re interpreting thriving == usage. Java is thriving in the sense it gets releases every 6 months and it’s so much more enjoyable to code with nowadays
@@konga8165 also given that the number of good languages has exploded, of course java’s usage would go down. However their ecosystems are much less established, as well as their communities
@@meostyles PHP and Ruby usage is down and I would say that they are not thriving. If less people are using a language, I don’t think it’s “thriving”. Also if “thriving” is based off of release frequency then Rust wins. It has a 6 week release cycle.
I totally agree with the Video. I know a lot of languages are becoming more high level & abstract i.e. Python. But when a beginner has to work with Legacy code written in Java, they often feel overwhelmed and confused by the boilerplate code, however if you learn Java first then move on to higher level languages you'll generally find it a lot easier. Having said all that, a big thank you to Nelson for producing quality content surrounding Java and how to make scalable, commercial applications with it.
I agree. I think Java is a good "mid tier" language, where its not too high level like JS or Python but its also not "scary" low level with too much detail/complexity like C++/C. Just a decent first language to learn most concepts you need.
Thank you for bringing up this topic! Our assessment is that Java will maintain its relevance due to its versatility and active community. By integrating new frameworks and features, Java has solidified its position as a flexible programming language that continues to evolve and adjust to new technological advancements. That's definitely a reason to believe that it's gonna run not only 2023, won't it ?
I learned programming 10 years ago with Java and I think it might have been the best decision I took. Not as hard to learn as C/C++ (no need that much control over memory and such) but not as simple as JavaScript or Python. Great mid-way to learn OOP and make games/apps multi-platform.
This. I started learning to code in 2009 bought some c++ books that made me hate programming. A few years later Java made me understand everything and eventually now I know several languages. Python, cpp, golang, and more.
Hey @@codewithvenky! I would recommend starting with a more language focused tutorial (just a Java tutorial) to get some language basics + programming logic & OOP (object oriented programming). Then it really depends on what you're interested in to doing. There are a lot of different frameworks, each of them focused on a solution. If you want to make websites then learn Spring Boot, you can make android apps with Android Studio (although I think they are switching to Kotlin) and much more. Also I would recommend thinking a bit about what kind of software are you looking to develop. (Ex: for iOS apps it's better to learn Swift and make them native). Hope that helps, don't feel bad if you don't know what you want to do, I have been testing different things over the last 10 years (Started with Games on pure Java, switched to websites with HTML5 + CSS3 + Javascript, then tried some C++ in Unreal Engine, C# on Unity, back to webdev with React and ended learning backend [JavaScript/Typescript + Node.js + Express], [C# + .NET] & [Java + Spring Boot]). Just try to not waste time in "tutorial hell" as many of us self-taught people end up doing. Watch tutorials to learn how a language/framework works, but then create your own projects from scratch. If you just copy over and over projects from youtube tutorials. Like TheCherno said a long time ago "You can read a 1000 books about how to play a guitar, but if you don't take a guitar and try to actually playing it you won't learn how to do it". :)
2:42 I am a self taught python developer. Recently I got job as a java developer. I found it really hard to get comfortable with java and springboot but as I have learned java Now when i got back to code in python I do find it very easy.
I agree that if you know assembler then any language will be very easy to learn, and if you know Java you can learn any higher level languages very easily and quickly. But in the long run, I recommend to learn more than just Java. After you master Java as a backend developer, learn JS, HTML, CSS and try to develop your own simple fullstack application with pure JS on the front end and Java/Kotlin on the backend. After mastering this step you will be able to easily understand other JS frameworks such as NodeJS, React, Angular, Vuejs, etc. After that, you will be able to easily find any job as a software developer and will be able to understand the whole picture in your company project: from the point of view of the users of the product, the front-end developer, and from the point of view of the back-end developer. And even if you will be primarily a back-end developer, knowing the rest of the application layers will help you better design your back-end architecture, as well as communicate effectively with front-end development teams. You will be think not like a coder but like an architect.
I absolutely adore this video! As a backend developer, I have the privilege of working with Java on a daily basis. Despite not being as widely discussed as JavaScript, Java remains an incredibly relevant and powerful language that continues to drive the backend systems of some of the world's most well-known companies. As you rightly pointed out, Java is the building block of many other programming languages, making it a valuable investment of time and effort for those just starting out in their coding journey. 🙌
Not to mention a lot of big companies are finally starting to convert their old COBOL systems over to Java code. So knowing Java means consistent employment for helping with replacing those billions of lines of COBOL still out there.
Java is definitely still relevant for a lot of enterprise systems. The question is that if people are using Java that much for new projects with new architecture. My impression is that Java memory footprint with JVM is relatively large when compared with more modern languages such as Golang. That makes Java not the first option when microservice architecture is adopted. I guess new versions of Java might have considered this to allow people tweak configurations of the JVM, yup then you might need learn something additional to make it suitable for microservices given that microservice was not a thing back in 1995 when Java was designed. Simply put, modern languages don't just mean "trendy" but they mean they have been designed from scratched for modern system architectures as software development has evolved gradually. Java might not be the top choice in a lot of situations anymore. I have seen people build new web backend with NodeJS, Golang for microservices, Python for data science, Solidity for web3 smart contracts, Golang for devops programs such as k8s and docker.
I agree: learning for long run is good for young people and Java has big advantages: 1. wide spread language C-style syntax (like C, C++, C#, JavaScript); 2. fatal error safe features; 3. object oriented programming libraries to learn advanced concepts & architecture of how to make good software design, development and test. I recommend learning Java with already learned entry level programming skills (e. g. on Raspberry Pi: BlueJ Java IDE, JavaScript or Python). Thats was the reason why I supported my son learning Java, after he showed interest about mathematics, physics, programming (self taught LEGO Mindstorms Robot, school: Pascal, Java). Unfortunately I never got a Java job after learning it, after long time C++ and C# jobs saved me. And these programming languages are closer to Java, or Java is closer to them as you might look at it.
I can see Kotlin slowly surpassing Java as the programming language to know for running apps on the JVM. However, it will be a SLOW process. It can be fast, if JetBrains can figure out a way to make migration from Java to Kotlin a breeze.
I completely agree. While I started with Objective C and then Swift, like Java, it really gave me a good fundamentals to understand and quickly pick up other languages, so jumping to C# and Java was simple as was picking up other languages like Go, Javascript, Typescript and Python. Unfortunately, there are too many people in software development who become too fixated on one language and then want that one language to solve every problem. Like you say, a programming language is just a tool and you should use the best tool for a specific purpose. Also, especially in the Javascript world, developers change to the hottest new framework every 6 months, while Java may not be as exciting it has a solid ecosystem that doesn't drastically change every few months.
If I could start over again I would definitively start with Java and/or PHP. Yes, all these modern tech stacks are cool but most of all enterprises companies today are built with enterprise tech stack/solutions…I.E .Net, Java/Spring Boot, and LAMP
You should learn Java as beginner language. Because you will learn CS basics and some foundational tools for programming. Design Patterns. Lots of good CS books and university courses still uses java. I learn JavaScript as beginner language and i regret learning it. I wish I could have learn Java.
I group languages into 4 different buckets C and C++ - high performant Java and C# - memory and type safe JavaScript, Python, Ruby, PHP - simple But Rust and Go take the cake. They are high performant, memory safe, type safe, and simple.
Wa'alaikumussalam. Alhamdulillah thank you for the video. I stopped working last 2 years and started applying for jobs again. Saw that people are still trying to look for Java developers and the pay while not being the highest, it definitely is still in-demand. I used to work in a big company. The down side is that I don't know the whole system. I'm learning Java again but it gets overwhelming seeing the road map.
I gave myself brain-damage when learning to code, by starting out with old-school BASIC (AppleSoft, GW-Basic) and then I was told by a teacher to go and learn Pascal. Same argument as Javascript vs Java -- start with the sane language ASAP to undo my bad habits, and make it easier to pick up other languages. It was excellent advice, because it was much easier to pick up C after that.
A language is always only as powerful as the tooling you can have, as well as the amount of quality libraries out there that you can use to build applications. After all, you do not want to reinvent the wheel. For Java, you have really top class IDEs (albeit for other languages too, but especially as a statically typed language the amount of knowledge an IDE can have over your project is stunning), and the amount of really well written, performant libraries and frameworks out there is just top class). Show me something like Spring Boot in another language...
Exactly. I learned Python a few years ago after being a life long Java developer and its a find tool. Heck, its a great tool. But the IDE support is like being in the dark ages because of the lack of static typing. I often hear people talk about other languages being more efficient to write in than Java. I think a proficient java developer with a good IDE and a framework like Spring Boot is pretty damn fast.
The only reason why people are saying that Java is dying is that there is a MASSIVE influx of programmers in recent years, almost all of which are flocking to Javascript, Go, etc because they're immensely popular. This doesn't mean that Java is dying.
I think Java is still being used, or at least in the codebase, but I don't think for new projects, many companies are choosing Java. Mainly because of the way Oracle has handled their situation with Google. I don't think it's because the language is stale more about the owner and not wanting to deal with a legal battle if they don't have too.
I started out programming with Java and it has been very easy picking up other languages, so far I switch between Java, Kotlin and Dart at work and my Java background has been super helpful.
Brilliant advice. The world is shifting towards cloud so js and Java are very good choice together with python. For Android kotlin and Java are good to go.
Hello Amigoscode Wa-Alaikum-Salaam! Really enjoyed your video and I watched till the end. I do have some personal reservations about Java by the way. When I started fiddling with programming in 2012, I started out with Java and I really didn't like the "public static void main Strings args" ritual. I didn't understand it and I was still in junior high school when I started reading a book called "Head First Java". I eventually switched to Python around 2014 and it was probably the best decision I made. After a couple of years, I wanted to try out Java again; I soon found out that Java was too verbose / long to write [for me]. I really didn't appreciate that I had to write so much code for a functionality I could write couple of lines for in Python. I haven't been back to Java ever since. I do think maybe work-related projects would eventually bring me back to writing Java code one day. Funny enough, I seem to enjoy writing C, C++ code than any other static programming language [and that would probably include Java as well - I'll only know when I have to write Java for something important]. Thanks for the interesting video. The motion graphics in the text did improve retention for me... Cheers.
BackEnd: Java Best Choice and learn a framework Spring. FrontEnd: React Best choice or Angular SQL: MySQL/Postgre? Combine all these with Crud Applications and keep learn more like microservices etc. Just be better dont change languadge and start from scratch.
I learn java back days on college, i was hesitanted to ask or starting learn spring boot, i have solid knowledge in java so it will be easier to me, thank man,. بارك الله فيك وفي علمك
I'm honestly not surprised to see this in my recommendations. Probably because I'm going to go through Java next week in my university, after 5 weeks of C. But it's not going to be too hard since I learned the basic syntax of these languages beforehand. While Python was my first programming language. Transitioning to C++ a year ago wasn't hard, because I tried to learn it sometime before I learned Python 4 years ago.
Thank you for this video; it came at the right time. I had the same opinion as you do - it's still important to learn java because it'd be a good programming foundation, and it'll make it easier to work with other programming languages. This was my plan (to be well vast in java) but what if I don't have enough time to learn java and need to learn what I need for the moment because I have a project that would be better written in another language, for example, Python?
One of the problems for beginners when they approach older popular languages like Java is that the sheer number of highly specialised areas in which they are used makes it hard to evaluate what to learn. Also the scope of these languages can seem overwhelming. Clarifying what the core elements of a language are can really help reduce the initial shock. I used to be a trainer, developer and team leader. Java was my go-to tool for most projects. But problems with deployment and licensing (still ongoing, as I understand) shifted my focus to other languages. I'm not a fan of Oracle's approach and I'm glad to be out of it.
Java addressed many software engineering pain points that plagued the development landscape for mid/large applications during decades, increasing the chance of success for projects where using a scripted or weak typed languages are liability right off the bat. There has been a unjustified derogatory campaign against Java, whilst none is forced to like something, I think someone that programmed mid/large systems or understand architectural concepts and has actually learned Java, hardly ever would bash Java for no reason, this might sound pretentious but I usually think twice about working with someone that has that attitude and if the developer is really versatile or competent when they bash just for the sake of it.
I would add the fact that Project Loom is about be released and that would be a turning point in Java history as regards performance and resource consumption optimisation
I work with Java since 2001. Got a Sun Certified Java Programmer in 2004 and still working with Java today. At those times in 2001 wee were coding in Servlets with out.println(" hello world!"); AHHAAH There was no JSP, no Struts, no Spring, no JSF HAHA. Today Java is a paradise compared to those seasons and the Java version was 1.3! I move to Kotlin recently as well and Im working with both of them together.
Wooouuuwwww.... I got mesmerized.. amazing explanation. Thank you so much for this video. I always thought same as you but nobody use to take serious. Now I believe in me again that I was right.
I started with Go and contrary to what you've said in the video I found it very easy to pick up Java later. I personally have to disagree with many things you said here, and would recommend against starting with Java for a few reasons: 1. Java is HEAVILY object-oriented. Everything has to be a class, object, method, etc. It might be a good idea for big projects with massive codebases and many contributors, but it's overkill for most programs you want to build (public static void main(String[] args) just when you want to make a hello world program is a notorious meme), because what could've been just a few functions needs to be implemented as an entire new class with methods. OOP is very different from other programming paradigms and will make it hard to learn other programming languages that are more imperative or functional in nature, and eventually a fresh programmer that started with a heavily-OOP language like Java is going to pick up bad practices. In OOP terms, imperative programming is a "class", and object-oriented programming is an "instance" of that class. Child instances can inherit from their parent classes ("Cat" and "Dog" both inherit from "Animal"), but they are not comparable to one another ("Dog" is going to be much different from "Hamster"). Learning imperative programming first with C, JS or Python will be better at teaching you programming in general, but object-oriented programming is a niche that is different from the rest, and has its own set of rules and practices. It's like learning how to drive by getting a forklift certification, as opposed to learning how to drive a regular car. The best place to start would be C, as it's a simple language (though not easy) and is considered the Latin of programming languages, and will teach you everything you need to know about how a program operates and how programming works. C is so influential that it serves as the "blueprint" for most languages - like Java, JavaScript, C#, Go, Rust, and many others, additionally the Python interpreter is written in C. 2. Java tooling is not the greatest, and it's all over the place. There are many different Java JDKs and build tools etc. and a beginner will get easily confused and deterred from Java after not knowing what to pick and the differences between everything. And I do not wish debugging a Java program even to my worst enemies - error logs and debug traces are excruciatingly verbose, yet they barely tell anything useful. If I started with Java and saw such an ominous looking wall of text on an error, I would've probably thought to myself "this is not for me, my mental capacity is not big enough to understand this black magic" and given up on such a beautiful thing that is programming. 3. OOP is being moved away from. Trends both in business and hobby are signaling that programmers in general are moving back towards imperative programming. Functional programming also picked up a lot of notability in recent years and even started being supported in JavaScript and Python. With the amount of hate OOP has been getting for decades, and the rise of object-oriented languages that get rid of traditional (and controversial) OOP features (such as classes and inheritance) - i.e. Go and Rust - it seems the world has decided Java and OOP aren't good enough to be the "standard" anymore. This basically suggests that learning Java means you'll be maintaining legacy codebases, while most new projects will be done either in much more portable JavaScript and Python, or "cooler" languages like Rust and Go. BTW, "A language is just a tool to solve a problem. People say "oh I hate this language because of this", don't be one of them. Be a person that can work with any language." is such a real and valuable and underrated statement, you get points in my book for that. People forget that at the end of the day programming languages, code editors, etc. are just tools to get the job done and petty fights serve no purpose other than distract you from your work. I picked up Java just because I wanted to, and no amount of Java/OOP hate will change my mind. A good programmer is not one that masters a specific tool, but one that can solve a problem no matter what tool you throw at them.
I started learning C# since a two weeks ago. As I know there is no big difference between them and you can do approximately anything by using both languages.
I'd argue C# and .NET is actually a bit better than Java. The language has more complete and cohesive features and syntax, libs generally seem a bit higher quality, and it seems to have better tooling. I know many people or companies got with Java because they basically didn't want to deal with Microsoft licensing or be locked into their ecosystem. but now .NET is open source and cross platform too. Java does have the jobs going for it though, there seems to be more than C#, and also higher pay quite often. Also, it is a little bit of a different job market here and there (eg. Android development) so depends what you want to do. I started initially with C# partially because of learning Unity (game engine), but actually use it professionally for backend now.
@@AliSattarBarani I never did a course on C# actually. Just youtube videos and mostly used the official documentation. It might seem confusing at first but once you understand the documentation structure it is quite good I think. Quite a lot of tutorials and examples on there of how to use all their different technologies.
Aye I had to subscribe off this insight and passion i could really hear in the positivity ! I am really really greatful for your video so I am going to make a video and send it out
I am not a Java developer but it's certainly not dead. It's still very popular in most Software dev stacks together with javascript since both languages are OOP oriented. In my area, there is demand for backend java developers without needing too much experience (2/3 years), while earning 4 -6k in the first period, which is well above average pay.
I think the best programming language to start with if you want to remove the fear of languages is C/C++ with manual memory management and no gc you need to do all by yourself than switch to java where you do all the things by yourself except for the memory management and after pick any language you want, it will be super easy You can take look at assembly to know how the cpu execute your code, just to have the bigger picture
I do lots of application security testing, the amount of projects iv worked with 9 out of 10 its been java. I decided to learn java since I depend on Burp Suite and need to write custom extensions.
Thank you Nelson, that was a brilliant analogy of programming languages of which i cant believe i never thought of like that untill you explained it so simply I feel quite embarrassed to admit. But aside from that I am now taking onboard your welcome advice and I think i will seriously concider java as a language to learn and get comfortable with.... blessing my brother.
Thanks for your comments. Not quite sure why there is this debate, C/C++ have been around far longer and they are still in wide spread use. Java is a very good general purpose language, suitable for all manner of apps.
This is so random, but i remember watching a video of yours last year where you said that you quit your company, and i was devastated to know that, because you gave such a good impression of how a software engineer works and it seemed fun there and you seemed happy
Considering the points you raised you should have recommended C++ which is a much more powerful and elegant language and one which Java is tracking along the way C++ actually showed the OO way to a bunch of languages (including Java), plus that C++ has no garbage collector which required the programmer be much more professional that one that uses languages where a garbage collector keeps your back
The only problem to solve problems w java is that this language has a syntax that hinders more than it helps, this certainly makes life difficult for the programmer. Today I really appreciate some other languages, like Kotlin, because this language takes the best of Java concepts, for example, it decreases the code size, causing faster development of large Android projects. But it's really necessary to understand that Java is very important and necessary for some projects, besides being fundamental for understanding modern software development.
i am learning python , i studied java during pandemic and i didnt attended the online classes but i regret but when i saw c# at first i thought it is java
I've worked with Java for years and years, but these days I've migrated to using Typescript for a few reasons, the first is barrier to entry for newer developers, Java has great features, the best standard library API of any language out there, but still at its core is very verbose. The second reason is the weight of the memory footprint for any sizable application - with thread pools and dependencies, the memory footprint of a single Spring application is astronomical. The third reason is the fact that the JVM is still using multi-threading and blocking I/O - this isn't something that Java/Oracle can solve within a 6-month release window. Adding async/await type structure would be a fundamental change to the entire environment that I don't ever see happening. Java does, however though it's conventions and standardization, imbue developers with good coding practices that apply to nearly any other language or environment. It should also be noted that Java package dependencies are solidly tested and seem much more professional than most NPM packages. I love the language, but as far as my current project workload stands, it's not and never will be the best choice.
Should you learn this, should you learn that, If you keep considering what technology is better than the others, this will never end, you will continue to think about this without being productive. just code, make some progress, make a project, develop the project. Don't keep living in an endless loop, like continuously consider what to learn.
Great Video!. I almost agree with all of your points, but even now, where there are a lot of java jobs, I've seen a lot of them related to maintaining legacy code or migrating legacy code (which is great but time consuming). Maybe I'm wrong, but there are new alternative languages to build backend apps related to microservices, AWS, hexagonal architecture, and so on. Golang, Kotlin (which I know is primarily used in mobile apps, but I've seen it used in backend as well), and even C# are improving in terms of language features. With new Java versions, I hope this will change, but obviously Java is still a great language.
Anyone who says Java is dead or even close to dead doesn't know much about Enterprise Systems and Business Applications. Java is everywhere in businesses and companies, both small and large alike. Lots of new projects are built in Java. Java is battle-tested and highly effective and secure. There's virtually no Business Application that can't be built using Java. Most average people like to language-hop and jump on the next shiny object/tool but effective people/companies know how to leverage existing systems/tools to get the job done; Java is such an effective system/tool. Java is a very good language (for beginners and seasoned professionals) and has a bright future
Java is certainly not dead. But there are simply better alternatives like Golang and Rust that can do the same job (microservices for an example) better and more efficiently.
When you try ThreadPool in Java you will realize that Java is beyond what you’ve been told about the alternatives, especially when you need to build a highly scaled enterprise services none of these alternatives can beat Java.
Jazakallah fantastic advice. Could not agree more with you. A language is just a tool. If I may add. I would always recommend a developer to specialise first in one language. Become a master in it, but also keep yourself open and adaptable to other language where required.
Really Really thanks for amigoscode for posting this video becuz recently i had doubt that java is dying becuz most people switch to python ,golang ,kotlin.This video gives me boosting to learn java becuz i am fan of java.And Once again java is back on track hurrah!.once a king always a king
I agree with you that java is a good foundation language, and that is why many schools are teaching it (hence why there are so many tutorial searches). For me personally I think JavaScript/Typescript offer a much more appealing journey that can open up many more doors.
Why is it that you think JS/TS is better in your opinion?? I'm a coding bootcamp graduate who can comfortably code with js/ts. Now that I am going through the job hunting process, there are so little back-end rolls that require only js/ts, hence why I started doubling down in Java. If you have a different experience, I'd love to hear about it! (I live in Japan, so the tech market might be a little different...)
@@kazukiaj8565 It's not that I think it's better, you can make killer API's with both Java or Typescript. My opinion is that it has more marketability for an individual. Web applications dominate the industry and are primarily written with JS. The fact that you can use JS for frontend, backend, mobile apps, etc gives you a lot of value and the more value you can bring to a team the better. But if your goal is to be a backend developer only, I think Java is a very respectable & valid path. Personally, in my situation we don't have a big team so we can develop applications rapidly sharing typescript types & logic between front & backend services... so we get a huge efficiency boost from it.
🔥New Course Coming Soon
Join Waiting List - waiting-list.amigoscode.com
Dear can you please make a tutorial on ORACLE ADF Please and thank you
SUN micro services.
No,
SUN Micro systems
@@truth-7380 Truth!
@@michelchaghoury9629 Yes darling, at what starting level would you prefer it to be at sweetheart. Should the tutorial start at beginner level honey? Or should it be at intermediate level my sugar pumpkin pie? Baby please reply so we can make an arrangement for you okay love?
It's always good to learn something.
I'm a professional Java developer for years and I can say, without hesitation that Java is definitely not dead. Its still largely adopt in IT services. The community is absolutely huge. Also, the last release of Spring 6, project Loom and so on are very excited for us.
But if I could recommend something for beginners, just focus on well established languages instead of trending ones. I mean, Java, Javascript, Typescript, Python are the most popular OOP languages. I would not recommend to learn new languages such as Rust or Golang for beginners cause the learning curve may be to complicated for you and to be honest they are not many companies compared to OOP languages which hires developers ;)
BTW : thanks for you content @Amigoscode, its perfect as usual ;)
Well said buddy
can you say from your perspective how this AI will affect java related jobs?
@@ProMinecraftSprite I don't know exactly what you're talking about but if you think about AI like ChatGPT. I use it every day, and after 1 month of daily usage clearly there are still lots of issues with the generated code. But its the most overpowered, game changer tool I ever used for boring or complicated tasks such as writing documentation, reverse engineering of legacy applications, writing postman tests, sql, elasticsearch or mongo queries. I'm sure that it will not replace developer (or maybe in many years) but it allow us to be productive as f*ck in some cases.
@@pierregerard8215 Thanks for your answer, I was wondering how companies(that you work in too) look at it.
I would highly recommend learning Rust and Go. Java has been trending down since 2016 in usage. Go especially is way more simple than Java and way easier to learn.
I think we are going to see Go and Rust dominate the landscape in the next 5-10 years. They are just objectively better in every way. They are way more performant, have a better type system, they have a cleaner syntax, and their dependency management system is way better.
Java acts like a Rosetta stone for programming languages. Learning Java equips you to use any programming languages without even the need to learn them. You simply need a basic cheat sheet for that language in front of you and you can take off.
Not so much for the functional languages brother...you could call it a rosetta stone for OO languages. But abstraction is a theme found almost everywhere.
Uhhhh, C++ is the Rosetta Stone pal.
@@future_teknokrat7585 Uhhhh thats C buddy 🤓☝
Yes, you technically can write same abstraction bloatware everywhere, because all modern languages unfortunately support classes and interfaces.
I worked my first job in Java at a database company and later also using it in the backend at Google, and it's definitely still thriving. It might not be the hot thing that all startups are defaulting to using it today, but it definitely 1. provides a great foundation for OOP/type-based language (I would actually prefer to hire someone who has past Java experience vs just JS experience) 2. is still relevant in a large number of big (and small) companies who choose to use it.
I am a Java backend developer (cloud, microservices) and there is still plenty of work for me. I am now on working on big project for next 2-3 years with this stack.
If you want to learn Java then the market demand is - Java, Spring Boot, Docker, Kubernetes, AWS, Hexagonal architecture, microservices…
Plenty of work and demand for this on European market.
If you like frontend then pick also Javascript, React and Angular.
If you know Java and Javascript you can be fullstack developer…
Same situation
i learned all this and also you need docker kubernetes
Can you recommend any books or courses you recommend to learn all those stuff please
@@themadmen1717 I don’t know… I think book “Thinking in Java” is still valid. I use it when I forget something… Check what Amigoscode has to offer :)
Find a good course on UA-cam that would be about “Object oriented programming with Java”.
Not just learning Java… Find something yourself that would fit your style.
Then learn Data Structures and Algorithms in Java. Maybe something like AlgoExpert or Log2Base2 sites. Or courses for free on UA-cam. And Amigoscode maybe :) I used AlgoExpert and it was good.
Then I used course Spring Framework master class on Udemy.
First try what is for free. Try different people, courses etc and find your style to learn… Once you find best way you can learn then try some payed courses.
what about python for backed? Most popular option....
"Learn Java and the rest of the programming languages are going to be easy" that I can say is true. I'm coming from a JavaScript environment and I realized I've missed a lot of fundamental concepts like design principles, best practices and most of the OOP concepts as JS is more like code however you like.
do you recommend web developer to learn Java, primarily to shift from web to software industry?
@@DnKZone yeah I think Java is a good choice for that. One reason is, it is well documented and you'll find many experienced individuals who'll guide you and also many of the design principles are well implemented in java.
@@selahadinjemal7138 You just motivated me, thanks!
Can you tell me the learning path you are following? Because I am all confused, should I learn Kotlin and go for App development or learn Backend systems development. I am also confused, what does this Backend Systems means?
I am also doing web development for some years now. I also think I need to acquire software industry knowledge for long-term career.
"Best practices" are not even good, you technically can write that exact code in Javascript or Python, like in Java, but you don't have to.
In Java you just don't have a choice, you locked in endless OOP brainrot with boilerplates.
I was taught java in highschool and learned C in college (and use for my job), and although I don't really like programming in java, the concepts that java taught me have helped me throughout my career. Knowing both java and C I got a very deep understanding of how all of this works.
I was previously working with python and JavaScript but learning java has cemented my OOP concepts and made me understand the difficult parts in JavaScript and python. I totally agree with Amigos code that learning java makes you learn other OOP languages easily
Except...that Java, Python or JavaScript has a submediocre implementation of proper OOP. Smalltalk remains the best OOP implementation, the original one based on messages where the OO part is the lesser concept.
@@encapsulatio No point in learning Smalltalk. OOP is bad.
Just because Java enforces you to write code in classes, you're not writing better code. Its quite the opposite.
Most of the time you're using wrong tool(OOP) for the task, and have to cope with all SOLID workarounds.
Java is just thriving just as it has been for 10 years. All the big companies who started with a more trendier language eventually migrate over. And Spring Boot is just 🤩
“Java is just thriving just as it has been for 10 years” this comment is objectively false. Usage has been declining for the past 10 years
@@konga8165 Not objective, you’re interpreting thriving == usage. Java is thriving in the sense it gets releases every 6 months and it’s so much more enjoyable to code with nowadays
@@konga8165 also given that the number of good languages has exploded, of course java’s usage would go down. However their ecosystems are much less established, as well as their communities
@@meostyles PHP and Ruby usage is down and I would say that they are not thriving. If less people are using a language, I don’t think it’s “thriving”. Also if “thriving” is based off of release frequency then Rust wins. It has a 6 week release cycle.
@@meostyles I do agree that Java has a higher quantity and maturity of packages.
I totally agree with the Video.
I know a lot of languages are becoming more high level & abstract i.e. Python. But when a beginner has to work with Legacy code written in Java, they often feel overwhelmed and confused by the boilerplate code, however if you learn Java first then move on to higher level languages you'll generally find it a lot easier.
Having said all that, a big thank you to Nelson for producing quality content surrounding Java and how to make scalable, commercial applications with it.
I agree. I think Java is a good "mid tier" language, where its not too high level like JS or Python but its also not "scary" low level with too much detail/complexity like C++/C. Just a decent first language to learn most concepts you need.
@@businessparis9364 It's always good to learn something.
Plus modern Java is just as succinct as you would expect from a modern language.
Thank you for bringing up this topic! Our assessment is that Java will maintain its relevance due to its versatility and active community. By integrating new frameworks and features, Java has solidified its position as a flexible programming language that continues to evolve and adjust to new technological advancements. That's definitely a reason to believe that it's gonna run not only 2023, won't it ?
I learned programming 10 years ago with Java and I think it might have been the best decision I took. Not as hard to learn as C/C++ (no need that much control over memory and such) but not as simple as JavaScript or Python. Great mid-way to learn OOP and make games/apps multi-platform.
This. I started learning to code in 2009 bought some c++ books that made me hate programming. A few years later Java made me understand everything and eventually now I know several languages. Python, cpp, golang, and more.
Hi sir...can you guide me to start Java learning
:) Please reply
Hey @@codewithvenky! I would recommend starting with a more language focused tutorial (just a Java tutorial) to get some language basics + programming logic & OOP (object oriented programming). Then it really depends on what you're interested in to doing. There are a lot of different frameworks, each of them focused on a solution. If you want to make websites then learn Spring Boot, you can make android apps with Android Studio (although I think they are switching to Kotlin) and much more. Also I would recommend thinking a bit about what kind of software are you looking to develop. (Ex: for iOS apps it's better to learn Swift and make them native). Hope that helps, don't feel bad if you don't know what you want to do, I have been testing different things over the last 10 years (Started with Games on pure Java, switched to websites with HTML5 + CSS3 + Javascript, then tried some C++ in Unreal Engine, C# on Unity, back to webdev with React and ended learning backend [JavaScript/Typescript + Node.js + Express], [C# + .NET] & [Java + Spring Boot]).
Just try to not waste time in "tutorial hell" as many of us self-taught people end up doing.
Watch tutorials to learn how a language/framework works, but then create your own projects from scratch. If you just copy over and over projects from youtube tutorials.
Like TheCherno said a long time ago "You can read a 1000 books about how to play a guitar, but if you don't take a guitar and try to actually playing it you won't learn how to do it". :)
2:42
I am a self taught python developer. Recently I got job as a java developer. I found it really hard to get comfortable with java and springboot but as I have learned java
Now when i got back to code in python I do find it very easy.
I agree that if you know assembler then any language will be very easy to learn, and if you know Java you can learn any higher level languages very easily and quickly. But in the long run, I recommend to learn more than just Java. After you master Java as a backend developer, learn JS, HTML, CSS and try to develop your own simple fullstack application with pure JS on the front end and Java/Kotlin on the backend. After mastering this step you will be able to easily understand other JS frameworks such as NodeJS, React, Angular, Vuejs, etc. After that, you will be able to easily find any job as a software developer and will be able to understand the whole picture in your company project: from the point of view of the users of the product, the front-end developer, and from the point of view of the back-end developer. And even if you will be primarily a back-end developer, knowing the rest of the application layers will help you better design your back-end architecture, as well as communicate effectively with front-end development teams. You will be think not like a coder but like an architect.
I absolutely adore this video! As a backend developer, I have the privilege of working with Java on a daily basis. Despite not being as widely discussed as JavaScript, Java remains an incredibly relevant and powerful language that continues to drive the backend systems of some of the world's most well-known companies. As you rightly pointed out, Java is the building block of many other programming languages, making it a valuable investment of time and effort for those just starting out in their coding journey. 🙌
Not to mention a lot of big companies are finally starting to convert their old COBOL systems over to Java code. So knowing Java means consistent employment for helping with replacing those billions of lines of COBOL still out there.
It's always good to learn something.
@@programmingwithnurulhuda what are you on about? Learn to do something with your brain.
Java is definitely still relevant for a lot of enterprise systems. The question is that if people are using Java that much for new projects with new architecture. My impression is that Java memory footprint with JVM is relatively large when compared with more modern languages such as Golang. That makes Java not the first option when microservice architecture is adopted. I guess new versions of Java might have considered this to allow people tweak configurations of the JVM, yup then you might need learn something additional to make it suitable for microservices given that microservice was not a thing back in 1995 when Java was designed.
Simply put, modern languages don't just mean "trendy" but they mean they have been designed from scratched for modern system architectures as software development has evolved gradually. Java might not be the top choice in a lot of situations anymore. I have seen people build new web backend with NodeJS, Golang for microservices, Python for data science, Solidity for web3 smart contracts, Golang for devops programs such as k8s and docker.
السلام عليكم ورحمة الله وبركاته
Alhamdulilah i’m happy to see a Muslim brother teaching these things. May Allah Subhanahu Wa Ta’ala bless you akhi
I agree: learning for long run is good for young people and Java has big advantages: 1. wide spread language C-style syntax (like C, C++, C#, JavaScript); 2. fatal error safe features; 3. object oriented programming libraries to learn advanced concepts & architecture of how to make good software design, development and test. I recommend learning Java with already learned entry level programming skills (e. g. on Raspberry Pi: BlueJ Java IDE, JavaScript or Python).
Thats was the reason why I supported my son learning Java, after he showed interest about mathematics, physics, programming (self taught LEGO Mindstorms Robot, school: Pascal, Java).
Unfortunately I never got a Java job after learning it, after long time C++ and C# jobs saved me. And these programming languages are closer to Java, or Java is closer to them as you might look at it.
thank you, this makes me excited.
salam from Jakarta
I can see Kotlin slowly surpassing Java as the programming language to know for running apps on the JVM. However, it will be a SLOW process. It can be fast, if JetBrains can figure out a way to make migration from Java to Kotlin a breeze.
Never out of Android Kotlin is very unpopular in used and becomes more complicated
I completely agree. While I started with Objective C and then Swift, like Java, it really gave me a good fundamentals to understand and quickly pick up other languages, so jumping to C# and Java was simple as was picking up other languages like Go, Javascript, Typescript and Python. Unfortunately, there are too many people in software development who become too fixated on one language and then want that one language to solve every problem. Like you say, a programming language is just a tool and you should use the best tool for a specific purpose. Also, especially in the Javascript world, developers change to the hottest new framework every 6 months, while Java may not be as exciting it has a solid ecosystem that doesn't drastically change every few months.
Yea that's my biggest hate about javascript they never stick to a single damn foundation lol frameworks are out of control there
It's always good to learn something.
@@programmingwithnurulhuda shut up
If I could start over again I would definitively start with Java and/or PHP. Yes, all these modern tech stacks are cool but most of all enterprises companies today are built with enterprise tech stack/solutions…I.E .Net, Java/Spring Boot, and LAMP
You should learn Java as beginner language. Because you will learn CS basics and some foundational tools for programming. Design Patterns. Lots of good CS books and university courses still uses java. I learn JavaScript as beginner language and i regret learning it. I wish I could have learn Java.
I group languages into 4 different buckets
C and C++ - high performant
Java and C# - memory and type safe
JavaScript, Python, Ruby, PHP - simple
But Rust and Go take the cake. They are high performant, memory safe, type safe, and simple.
Wa'alaikumussalam.
Alhamdulillah thank you for the video.
I stopped working last 2 years and started applying for jobs again.
Saw that people are still trying to look for Java developers and the pay while not being the highest, it definitely is still in-demand.
I used to work in a big company. The down side is that I don't know the whole system. I'm learning Java again but it gets overwhelming seeing the road map.
In my experience and opinion. Learning java for me was challenging, but I understand how processes work. Which is very important to me.
I gave myself brain-damage when learning to code, by starting out with old-school BASIC (AppleSoft, GW-Basic) and then I was told by a teacher to go and learn Pascal. Same argument as Javascript vs Java -- start with the sane language ASAP to undo my bad habits, and make it easier to pick up other languages. It was excellent advice, because it was much easier to pick up C after that.
I never wanted to be a java developer. I love python. But after 5 year, I have do springbot projects continuously.
A language is always only as powerful as the tooling you can have, as well as the amount of quality libraries out there that you can use to build applications. After all, you do not want to reinvent the wheel. For Java, you have really top class IDEs (albeit for other languages too, but especially as a statically typed language the amount of knowledge an IDE can have over your project is stunning), and the amount of really well written, performant libraries and frameworks out there is just top class). Show me something like Spring Boot in another language...
Exactly. I learned Python a few years ago after being a life long Java developer and its a find tool. Heck, its a great tool. But the IDE support is like being in the dark ages because of the lack of static typing. I often hear people talk about other languages being more efficient to write in than Java. I think a proficient java developer with a good IDE and a framework like Spring Boot is pretty damn fast.
The only reason why people are saying that Java is dying is that there is a MASSIVE influx of programmers in recent years, almost all of which are flocking to Javascript, Go, etc because they're immensely popular. This doesn't mean that Java is dying.
I think Java is still being used, or at least in the codebase, but I don't think for new projects, many companies are choosing Java. Mainly because of the way Oracle has handled their situation with Google. I don't think it's because the language is stale more about the owner and not wanting to deal with a legal battle if they don't have too.
I started out programming with Java and it has been very easy picking up other languages, so far I switch between Java, Kotlin and Dart at work and my Java background has been super helpful.
Great. I am learning Kotlin now to switch permanently from Java. Java is great but to much verbose.
@@SuperGojeto There are a lot of newer language features on the newer versions of Java its just unfortunate we cannot use them on Android
@@ifechukwuudorji8274 It's always good to learn something.
@@SuperGojeto It's always good to learn something.
Brilliant advice. The world is shifting towards cloud so js and Java are very good choice together with python. For Android kotlin and Java are good to go.
Hello Amigoscode Wa-Alaikum-Salaam!
Really enjoyed your video and I watched till the end. I do have some personal reservations about Java by the way. When I started fiddling with programming in 2012, I started out with Java and I really didn't like the "public static void main Strings args" ritual. I didn't understand it and I was still in junior high school when I started reading a book called "Head First Java". I eventually switched to Python around 2014 and it was probably the best decision I made. After a couple of years, I wanted to try out Java again; I soon found out that Java was too verbose / long to write [for me]. I really didn't appreciate that I had to write so much code for a functionality I could write couple of lines for in Python. I haven't been back to Java ever since.
I do think maybe work-related projects would eventually bring me back to writing Java code one day. Funny enough, I seem to enjoy writing C, C++ code than any other static programming language [and that would probably include Java as well - I'll only know when I have to write Java for something important].
Thanks for the interesting video. The motion graphics in the text did improve retention for me...
Cheers.
Java, Spring , React/Angular +RDBMS make CRUD Operations with all this as full stack
BackEnd: Java Best Choice and learn a framework Spring.
FrontEnd: React Best choice or Angular
SQL: MySQL/Postgre?
Combine all these with Crud Applications and keep learn more like microservices etc. Just be better dont change languadge and start from scratch.
I learn java back days on college, i was hesitanted to ask or starting learn spring boot, i have solid knowledge in java so it will be easier to me, thank man,.
بارك الله فيك وفي علمك
I'm honestly not surprised to see this in my recommendations. Probably because I'm going to go through Java next week in my university, after 5 weeks of C. But it's not going to be too hard since I learned the basic syntax of these languages beforehand. While Python was my first programming language. Transitioning to C++ a year ago wasn't hard, because I tried to learn it sometime before I learned Python 4 years ago.
Walekum assalam akhi,
Appericiated your work
MasAllah brother great summary!
Thank you for this video; it came at the right time.
I had the same opinion as you do - it's still important to learn java because it'd be a good programming foundation, and it'll make it easier to work with other programming languages.
This was my plan (to be well vast in java) but what if I don't have enough time to learn java and need to learn what I need for the moment because I have a project that would be better written in another language, for example, Python?
One of the problems for beginners when they approach older popular languages like Java is that the sheer number of highly specialised areas in which they are used makes it hard to evaluate what to learn. Also the scope of these languages can seem overwhelming. Clarifying what the core elements of a language are can really help reduce the initial shock.
I used to be a trainer, developer and team leader. Java was my go-to tool for most projects. But problems with deployment and licensing (still ongoing, as I understand) shifted my focus to other languages. I'm not a fan of Oracle's approach and I'm glad to be out of it.
Thank you so much this clip just opened my mind and turned my life around
Thanks for your Video... Forever Java.. Grettins From Mexico.. Amigo
Java addressed many software engineering pain points that plagued the development landscape for mid/large applications during decades, increasing the chance of success for projects where using a scripted or weak typed languages are liability right off the bat. There has been a unjustified derogatory campaign against Java, whilst none is forced to like something, I think someone that programmed mid/large systems or understand architectural concepts and has actually learned Java, hardly ever would bash Java for no reason, this might sound pretentious but I usually think twice about working with someone that has that attitude and if the developer is really versatile or competent when they bash just for the sake of it.
I would add the fact that Project Loom is about be released and that would be a turning point in Java history as regards performance and resource consumption optimisation
I am Java Developer I needed some discussion like this thanks guys...
I work with Java since 2001. Got a Sun Certified Java Programmer in 2004 and still working with Java today. At those times in 2001 wee were coding in Servlets with out.println(" hello world!"); AHHAAH
There was no JSP, no Struts, no Spring, no JSF HAHA.
Today Java is a paradise compared to those seasons and the Java version was 1.3!
I move to Kotlin recently as well and Im working with both of them together.
Wooouuuwwww.... I got mesmerized.. amazing explanation. Thank you so much for this video. I always thought same as you but nobody use to take serious. Now I believe in me again that I was right.
I started with Go and contrary to what you've said in the video I found it very easy to pick up Java later. I personally have to disagree with many things you said here, and would recommend against starting with Java for a few reasons:
1. Java is HEAVILY object-oriented. Everything has to be a class, object, method, etc. It might be a good idea for big projects with massive codebases and many contributors, but it's overkill for most programs you want to build (public static void main(String[] args) just when you want to make a hello world program is a notorious meme), because what could've been just a few functions needs to be implemented as an entire new class with methods. OOP is very different from other programming paradigms and will make it hard to learn other programming languages that are more imperative or functional in nature, and eventually a fresh programmer that started with a heavily-OOP language like Java is going to pick up bad practices.
In OOP terms, imperative programming is a "class", and object-oriented programming is an "instance" of that class. Child instances can inherit from their parent classes ("Cat" and "Dog" both inherit from "Animal"), but they are not comparable to one another ("Dog" is going to be much different from "Hamster"). Learning imperative programming first with C, JS or Python will be better at teaching you programming in general, but object-oriented programming is a niche that is different from the rest, and has its own set of rules and practices. It's like learning how to drive by getting a forklift certification, as opposed to learning how to drive a regular car. The best place to start would be C, as it's a simple language (though not easy) and is considered the Latin of programming languages, and will teach you everything you need to know about how a program operates and how programming works. C is so influential that it serves as the "blueprint" for most languages - like Java, JavaScript, C#, Go, Rust, and many others, additionally the Python interpreter is written in C.
2. Java tooling is not the greatest, and it's all over the place. There are many different Java JDKs and build tools etc. and a beginner will get easily confused and deterred from Java after not knowing what to pick and the differences between everything. And I do not wish debugging a Java program even to my worst enemies - error logs and debug traces are excruciatingly verbose, yet they barely tell anything useful. If I started with Java and saw such an ominous looking wall of text on an error, I would've probably thought to myself "this is not for me, my mental capacity is not big enough to understand this black magic" and given up on such a beautiful thing that is programming.
3. OOP is being moved away from. Trends both in business and hobby are signaling that programmers in general are moving back towards imperative programming. Functional programming also picked up a lot of notability in recent years and even started being supported in JavaScript and Python. With the amount of hate OOP has been getting for decades, and the rise of object-oriented languages that get rid of traditional (and controversial) OOP features (such as classes and inheritance) - i.e. Go and Rust - it seems the world has decided Java and OOP aren't good enough to be the "standard" anymore. This basically suggests that learning Java means you'll be maintaining legacy codebases, while most new projects will be done either in much more portable JavaScript and Python, or "cooler" languages like Rust and Go.
BTW, "A language is just a tool to solve a problem. People say "oh I hate this language because of this", don't be one of them. Be a person that can work with any language." is such a real and valuable and underrated statement, you get points in my book for that. People forget that at the end of the day programming languages, code editors, etc. are just tools to get the job done and petty fights serve no purpose other than distract you from your work. I picked up Java just because I wanted to, and no amount of Java/OOP hate will change my mind. A good programmer is not one that masters a specific tool, but one that can solve a problem no matter what tool you throw at them.
I started learning C# since a two weeks ago. As I know there is no big difference between them and you can do approximately anything by using both languages.
I just started my journey with C# as well, happy learning
@@elkhoukhi It's always good to learn something.
I'd argue C# and .NET is actually a bit better than Java. The language has more complete and cohesive features and syntax, libs generally seem a bit higher quality, and it seems to have better tooling. I know many people or companies got with Java because they basically didn't want to deal with Microsoft licensing or be locked into their ecosystem. but now .NET is open source and cross platform too.
Java does have the jobs going for it though, there seems to be more than C#, and also higher pay quite often. Also, it is a little bit of a different job market here and there (eg. Android development) so depends what you want to do. I started initially with C# partially because of learning Unity (game engine), but actually use it professionally for backend now.
@@neomangeo7822
Do you have a course related to c# for backend. Any course you recommend it will be highly appreciated.
@@AliSattarBarani I never did a course on C# actually. Just youtube videos and mostly used the official documentation. It might seem confusing at first but once you understand the documentation structure it is quite good I think. Quite a lot of tutorials and examples on there of how to use all their different technologies.
Aye I had to subscribe off this insight and passion i could really hear in the positivity ! I am really really greatful for your video so I am going to make a video and send it out
Hooray! new video!
Watching your video makes me understand much faster. By putting text and graphics you make us understand both visually and aurally, thank you =)
I am not a Java developer but it's certainly not dead. It's still very popular in most Software dev stacks together with javascript since both languages are OOP oriented. In my area, there is demand for backend java developers without needing too much experience (2/3 years), while earning 4 -6k in the first period, which is well above average pay.
Thank you Nelson I have landed a job thanks to your videos , you content is awesome !!!
I think the best programming language to start with if you want to remove the fear of languages is C/C++ with manual memory management and no gc you need to do all by yourself than switch to java where you do all the things by yourself except for the memory management and after pick any language you want, it will be super easy
You can take look at assembly to know how the cpu execute your code, just to have the bigger picture
Great video, I started with Kotlin which is derived from Java and plan to learn Java next.
I do lots of application security testing, the amount of projects iv worked with 9 out of 10 its been java. I decided to learn java since I depend on Burp Suite and need to write custom extensions.
Thank you Nelson, that was a brilliant analogy of programming languages of which i cant believe i never thought of like that untill you explained it so simply I feel quite embarrassed to admit. But aside from that I am now taking onboard your welcome advice and I think i will seriously concider java as a language to learn and get comfortable with.... blessing my brother.
Thanks for your comments. Not quite sure why there is this debate, C/C++ have been around far longer and they are still in wide spread use. Java is a very good general purpose language, suitable for all manner of apps.
It's always good to learn something.
This is so random, but i remember watching a video of yours last year where you said that you quit your company, and i was devastated to know that, because you gave such a good impression of how a software engineer works and it seemed fun there and you seemed happy
I totally agree. Java was offered in universities/colleges offering the course on computer science.
Considering the points you raised you should have recommended C++ which is a much more powerful and elegant language
and one which Java is tracking along the way
C++ actually showed the OO way to a bunch of languages (including Java), plus that C++ has no garbage collector which required the programmer be much more professional that one that uses languages where a garbage collector keeps your back
In my experience C# and Java are like twins. Sure, there are differences. But they're very, VERY similar.
If you know one, you know most of the other
As someone who had been searching for graduate programs in big companies...l can tell you the most common language they all screem is JAVA
Depends on your goal and the market. But learning Java is something can help you to have a deep think.
Completely right, after learning Java I moved to JavaScript which I find easy to understand
Short answer: No
Long answer: It depends..
Good...that's why I am never gonna stop learning it
Of course Java is a good option, aswell as Python, TypeScript/ JavaScript and C# too.
Great video, I agree Java is still a great language to learn. It has a lot of capability in a various Tech areas.
The only problem to solve problems w java is that this language has a syntax that hinders more than it helps, this certainly makes life difficult for the programmer. Today I really appreciate some other languages, like Kotlin, because this language takes the best of Java concepts, for example, it decreases the code size, causing faster development of large Android projects. But it's really necessary to understand that Java is very important and necessary for some projects, besides being fundamental for understanding modern software development.
Java is the most important language and almost 80% of legacy code is build in Java. Java is never going out of demand
Jazakallahu Khair, Akhi
Kudos on the video!
Okay cool, the way you opened the video just saved me 8 minutes. Thanks bro.
Good question and thought! thank u!
As a email from a mailing list once told me, Java is the Fight Club
Language is a tool , we should always see it as choice to solve the kind of the problem. Good Video
Agreed! Java is still mesmerizing!
i am learning python , i studied java during pandemic and i didnt attended the online classes but i regret but when i saw c# at first i thought it is java
🎉🎉🎉 Java is not dying.. for instance although in android app development we do have Kotlin however Java still dominates as well.
Thank you for the reminder, Java is still BIG.
I've worked with Java for years and years, but these days I've migrated to using Typescript for a few reasons, the first is barrier to entry for newer developers, Java has great features, the best standard library API of any language out there, but still at its core is very verbose. The second reason is the weight of the memory footprint for any sizable application - with thread pools and dependencies, the memory footprint of a single Spring application is astronomical. The third reason is the fact that the JVM is still using multi-threading and blocking I/O - this isn't something that Java/Oracle can solve within a 6-month release window. Adding async/await type structure would be a fundamental change to the entire environment that I don't ever see happening. Java does, however though it's conventions and standardization, imbue developers with good coding practices that apply to nearly any other language or environment. It should also be noted that Java package dependencies are solidly tested and seem much more professional than most NPM packages.
I love the language, but as far as my current project workload stands, it's not and never will be the best choice.
You must not have done your research at really looking at all the modern java improvements. All of your cons are addressed.
Should you learn this, should you learn that, If you keep considering what technology is better than the others, this will never end, you will continue to think about this without being productive. just code, make some progress, make a project, develop the project. Don't keep living in an endless loop, like continuously consider what to learn.
Great Video!. I almost agree with all of your points, but even now, where there are a lot of java jobs, I've seen a lot of them related to maintaining legacy code or migrating legacy code (which is great but time consuming). Maybe I'm wrong, but there are new alternative languages to build backend apps related to microservices, AWS, hexagonal architecture, and so on. Golang, Kotlin (which I know is primarily used in mobile apps, but I've seen it used in backend as well), and even C# are improving in terms of language features. With new Java versions, I hope this will change, but obviously Java is still a great language.
It's always good to learn something.
Hey Amigo :) thx for the videos!
Anyone who says Java is dead or even close to dead doesn't know much about Enterprise Systems and Business Applications. Java is everywhere in businesses and companies, both small and large alike. Lots of new projects are built in Java. Java is battle-tested and highly effective and secure. There's virtually no Business Application that can't be built using Java. Most average people like to language-hop and jump on the next shiny object/tool but effective people/companies know how to leverage existing systems/tools to get the job done; Java is such an effective system/tool.
Java is a very good language (for beginners and seasoned professionals) and has a bright future
Java is certainly not dead. But there are simply better alternatives like Golang and Rust that can do the same job (microservices for an example) better and more efficiently.
True but Java has a bigger pool of developers. Golang and Rust are good but you are defintely gambling a bit that they will keep growing.
I love java but agree. Virtual Threads and AoT-compilation could make java microservices more efficient, but Rust is just unsurpassed.
When you try ThreadPool in Java you will realize that Java is beyond what you’ve been told about the alternatives, especially when you need to build a highly scaled enterprise services none of these alternatives can beat Java.
Mainframe code is being replaced, finally. The replacement is Java, so it has good few decades ahead of it.
Jazakallah fantastic advice.
Could not agree more with you. A language is just a tool.
If I may add. I would always recommend a developer to specialise first in one language. Become a master in it, but also keep yourself open and adaptable to other language where required.
It's always good to learn something.
Thanks Buddy you have always been a great Facilitator to me.
Really Really thanks for amigoscode for posting this video becuz recently i had doubt that java is dying becuz most people switch to python ,golang ,kotlin.This video gives me boosting to learn java becuz i am fan of java.And Once again java is back on track hurrah!.once a king always a king
Thank you! Wisdom :)
thanks for the video!
I agree with you that java is a good foundation language, and that is why many schools are teaching it (hence why there are so many tutorial searches). For me personally I think JavaScript/Typescript offer a much more appealing journey that can open up many more doors.
Why is it that you think JS/TS is better in your opinion??
I'm a coding bootcamp graduate who can comfortably code with js/ts. Now that I am going through the job hunting process, there are so little back-end rolls that require only js/ts, hence why I started doubling down in Java. If you have a different experience, I'd love to hear about it! (I live in Japan, so the tech market might be a little different...)
@@kazukiaj8565 It's not that I think it's better, you can make killer API's with both Java or Typescript.
My opinion is that it has more marketability for an individual. Web applications dominate the industry and are primarily written with JS. The fact that you can use JS for frontend, backend, mobile apps, etc gives you a lot of value and the more value you can bring to a team the better. But if your goal is to be a backend developer only, I think Java is a very respectable & valid path.
Personally, in my situation we don't have a big team so we can develop applications rapidly sharing typescript types & logic between front & backend services... so we get a huge efficiency boost from it.
@@kazukiaj8565 It's always good to learn something.
@@kazukiaj8565 yeah Java or C# for the backend is the way to go to get a job. Go / JavaScript are really only used by startups.
@@programmingwithnurulhuda no it’s not
Thank you for this. I liked the video
This is encouraging to hear ☺
Salesforce also designed a language based on Java, namely APEX. So learning Java puts you in a position to be a Salesforce developer as well.