Used to work with Java for like 2 years and thought I hated it. Only after switching jobs recently and start working with js and python it's made me realize the importance of a strongly typed language, specially when working with other people.
@br0ken_107 it's not strongly typed it just doesn't make stupid inferences like JavaScript to allow atrocities like adding empty arrays with empty objects, but you still can change variables types dynamically without explicit parsing, gosh In python you doesn't even have a way to create unmutable values (const or final), so no, python is not strong typed, it's just not as dumb as JS
Totally agree with Static Typing. Java was invented when corporations realized that, for the average programmer, pointers and memory management were forever going to be a sinkhole of time and productivity.
Java was the language that helped me get into IT, relocate to other country and it payed the bills for several years :) For those who like Java and not afraid of it weird verbosity I started working on a playlist with Java interview Q&A: ua-cam.com/video/LeqNBbFi6Z0/v-deo.html
Having been on the internet for a long time...it's the first time I hear someone so careful not to harass or belittle other people's efforts or knowledge.we need more of you. Thanks gratefully.
I love Java, I'll finish uni this year in France in October but I've already got a java full stack job at 22 that will start just after my studies. I'm so eager to have the opportunity to work with and master this language.
Hardly anyone will say this out loud, they'd rather complain about it's flaws. But the results are clear, even in the marketplace: Java. Not in every case, but certainly most. Even if one hates working in the language ecosystem.
Hi Dave , love your angle on things ( and your t shirts) . We developers are very lucky and would benefit from reminding ourselves of this on a regular basis. I work remotely from Australia for UK clients in the rail industry - I get to live in a sunny climate , write code and play with big trains ! How good is that. Btw. I grew up in the Midlands , and it is so refreshing to hear your straight talk and familiar accent. Keep up the excellent content. live long and prosper.
I remember transitioning from engineering to computer science, which moved me from using Matlab to using Java. Java was absolutely more verbose. That being said, while brevity is the soul of wit, Matlab more reminded me of that “Why waste time say lot word when few word do trick” quote from the office. It’s fewer words but it’s not easier to understand in the least.
My only beefs with Java are: - memory bloat. The joke is that the Java motto is "your RAM is all mine". You have to "jail" the JVM using a command line option, and then you are back to know everything about the program implementation, or else shoot from the hip and wish for the best. - how easy it is to shoot yourself in the foot with threads and protected methods. To me Java is no better than C++ on that matter. The language is otherwise so elegant. But I wish exceptions would go away, in any language. This was an experiment that has reached it's shelf life limit. Rust is showing a very interesting alternative.
Yes, concurrency is horrible in Java, although there are a LOT of ways to help with that, built in the language. But, just like many other things, one needs to actively learn them, as they are anything but intuitive. Likewise, protected visibility is VERY useful when done right, but can easily be abused, even without the dreaded diamond problem. The memory bloat is something that I personally have not yet encountered - but maybe I just overlooked it. I do tend to try and find resource leaks (and memory leaks) while programming, which in turn might mitigate that, but that behavior is also everything but easy or intuitive. So yes, those are real problems. Like most other problems, they can be circumvented, and like most other problems, one needs to learn about them to be able to do that. I thank uncle bob and Josh Bloch for that in my case =) Not sure about exceptions, though - just checked exceptions, they CAN be really *really* annoying.
@@ponypapa6785 let me clarify that I meant bloat, not leak. The JVM does a nice job of optimizing it's GC, but at the price of leaving a lot of memory unused. Amusingly our company's first big Java program worst bug was a memory leak: a bug missed removing items from an obscure list. The program died once every week.. The AWS developers have a nice take on languages, ranked according to energy use (a weighted sum of RAM and CPU use I guess) and it is telling.
@@ponypapa6785 about exceptions my beef is that one is tempted to ignore them (the default in most languages) and pass the buck to the caller, which may not have the context needed to handle them properly. The Rust's result approach seems to promote a better programming habit. (I am very new to Rust, so the conditional. I have been using exceptions since the '80s--in Ada.) Count me in the not-so-happy-with-java group, but it might just be my grumpy self.
As a confused beginner, and one who has tried out Python, HTML, CSS and JS, and now settled for Java and seem to be really loved it, (alongside SQL). due to all the negative sentiments people throw at the language, I happen to need motivation on a daily, like someone saying to me "Java is awsome, gain mastery in it" this you've done and with enough reasoning to support the claim, the much I can say is "THANK YOU" :)
Another great video, thanks :) -- I transitioned from Rails to JavaScript to now Java and I like working as a Java developer by far the most. It's a great job.
As a CS Student , I used to love Java Here’s why I changed my mind: 📍when you are stuck on some weird errors, it’s difficult to find a solution 📍 setting up a project is so tedious (maybe that’s just Eclipse) 📍 The documentation is also poorly explained
4:20, I can't even remember if I ever had a serious bug using pointers. Here go my tips for everyone, who use to have problems with that, to get rid of this issue once and for all: - If you have to allocate memory, don't do that directly: *use containers from the standard library* , STL. They have their size hidden from you, and manage it automatically. - When *traversing those containers, use their own iterators* (OO pointers). Member-f()s 'begin' and 'end' provide them for you. Just keep a model like this: *for_each (container.begin() + offset, container.end() - premature_end, some_algorithm);* With offset = 0. If you just want to run all the way _(default is copy, but you can reference that, with &)_ : *for (auto &a_var_not_ptr: container) some_algorithm (a_var_not_ptr);* In any of these cases you deal with pointer directly. - *Reallocations may invalidate previous iterators* : std::vector container; auto it = container.cbegin() + K; container.push_back (M); //May invalidate. auto x = *it; //May crash. There are 2 main solutions for this: a) Just "refresh it", after push_back: auto it = container.cbegin() + K; // ≃ F5 in a webpage. auto x = *it; //Guaranteed to work. b) *Recommended: reserve memory* right after container creation: //Chandler Carruth: _"We allocate a page each time. This is astonishing fast!"_ container.reserve (1024); container.push_back (M); //Just added M, not reallocate. auto x = *it; //Ok. There *won't has a new reallocation, as long as container.size()
Just to be clear, I was talking about C++ when Java was invented. There wasn't a standard template library then, and no containers for memory allocation.
My main complaint about Java is that there is much better alternative (Kotlin) that could be integrated into existing projects, yet I absolutely cannot convince my team to learn anything new. I actually had to fight for months so we'd upgrade to Java 17 and even then it only happened in one of our projects
I have switched to Kotlin and I hate it. the only problem with java is that most have to stay on older versions and support lots of legacy code, at the same time newer java versions offer many cool features that kotlin has.
7:59 I am learning java, and indeed, when I look up information on the internet and I get an answer actually conceived for c#, I most of the time don't look any further, because it almost always answers my java question.
I work on HPC software and I remember a professor I had said you could use c,c++, or even python for the code but if you wrote the code in java he would throw you out the window. He was also not wrong on that when we looked at the numerical performance. Every version of BLAS I have encountered for Java is much slower than the ones available for c based languages. Often 10s to 100s of times slower. However, Python makes it easy to hand off all that heavy lifting to c and c++ while Java calling to a c based BLAS is also slow. So it is easy to get code working and correct in Python and then update the algorithm to be efficient and then push off the performance to lower level languages by calling existing high performance libraries. That is why we have things like numpy, tensorflow, and torch.
Owning a company that has Java legacy codebase is worst thing possible. At this point Java development is pure rent seeking business, and have to die with sinking companies it leeches on.
me: why do I need to add getters and setters to every accessible property? my java mentor: abstraction! you can override the get and set behavior me: why do we use Lombok? my java mentor: because we never actually override the get/set behavior
BeCaUsE sOnAr SaYs So! also you CAN override the generated getters and setters in subclasses, but when you are overriding Getters and setters for POJOs, then there is something SERIOUSLY wrong with your approach. Plus: IMO, the only reason for (plain) setters is: regulate write-access to a variable. If necessary, fail-safes can be built in to ensure correct behavior without then having to change the API. The only reason for explicit getters should, again, be API and the idea of defensive copying. However, those are MY opinions that very few of my colleagues seem to share =)
Java 17's records made that a lot easier: you don't have to write getters because the language provides one for each declared property, and you don't need to write setters because the proprties are assigned when creating the instance (records are immutable)
I've been professionally working with Python for over 5 years now. I love the language, and think it is certainly fine for large projects. I do, however, understand the aspect of reliability in the community. For some frameworks like Django, typically the online help is really solid. However when you start looking through some of the data science communities the code quality jumps off a cliff. I think this is related to the lower entry barrier. There are trade offs. It is nice to see people getting into code, but as a professional it can be a little grating constantly seeing low quality code. I promise you, there are some of us out here trying to hold ourselves to a higher standard.
I know that to be true, my point is that I don't think that there is anything inherent in the language and common tools to promote that, whereas I think that there are things in the language and tools around Java that do. We could certainly debate that, but that is really what I meant in my comment about "I'd only do a Python project with others if they did great TDD". TDD is one approach to replacing, and supplementing, the protections that static typing, and strong tools offer. I think Python is a great tool, but to do a great job requires us to be expert and on our game. Java does too, but just a little less expert and a little less on our game YMMV!
It's because data science code is oftentimes written by people that are scientists first and programmers second. You see this in a lot of code written by scientists - it's a giant tarball. Language hardly matters, I've seen unholy messes of Java written by scientists in the past too.
@@bobbycrosby9765 Yes, there is a lot of very bad code written by scientists 😬 I think that they suffer the "smart-person's problem" when it comes to SW "how hard can it be - its not rocket science" - and the trouble is that SW can be extremely hard, but it doesn't look like it on the surface.
@@ContinuousDelivery Python has strong typing... IT is something you Discovery after the Basics of the language. IT is optional though, but required to be used with a lot of frameworks and libraries.
Over the last 18 years or so I’ve coded in PHP, JavaScript, TypeScript, Ruby, Python (tell me you were a web dev without telling me 😂) and now Java as my day-to-day, professional language. After a period of adjustment, I find Java to be one of the most satisfying languages to code in. Just enough “optional” low-level control to be performant and powerful, a good type system, and most high-level features (like garbage collection) active by default for when I don’t need to think about them. And it feels good knowing there are whole teams of people whose job it is to make the language better over time.
At one time, I thought Java was the best programming language for back-end development. But now believe that Go/GoLang is the best programming language for back-end development (Having used Java, C#, Python, Ruby, JS/TS(NodeJS).
Interesting: I have tried Prometheus on a 4GB mini-pc home server, and it ended badly. The (Linux) machine would crash once or twice a week. It was going out of memory. Prometheus would quickly take more and more memory until almost all was gone. When I looked at any options to restrict RAM use, I found that the max RAM used was hard coded, and that the Go GC would quickly take it all. I uninstalled Prometheus. I guess 4 GB is puny in the cloud?
Okay, don't roll your eyes, but C++ has come a long way: Pointers: When I tell people I'm a C++ programmer they say "Wow! You really like all that memory management?" In modern C++, unless you're directly communicating with hardware (embedded systems), you should basically never, ever use a raw pointer - and it should even be rare to use a shared_pointer/unique_pointer. I really do not have to worry about memory management. Those days have long gone. OOP: C++ is not all about objects! I think functions should be the default - write a class when it makes sense (which is quite often, I'll admit). When I was being taught C++ at uni there was an emphasis on inheritance, which should actually be quite niche. Complicated inheritance trees are awful. These days good code reuse comes from templates and composition of classes/functions with no side effects. Okay, I lied: The code I work on has a legacy core and so I *do* have to deal with memory management, but I've written sizeable projects before with literally no pointers (not even unique/shared).
I agree, I find memory issues in modern C++ to be a nothing-burger, it's easy to write memory safe code. The problem is, let's say you are working with a team of 10 people on a legacy codebase and half of them are terrible at C++ and constantly use raw pointers everywhere. Java just limits how bad the code written by your coworkers can be, and I love it.
I've been a C++ programmer for 30 years. I love it. Flexible, powerful, and performant, and implementations build native executables by default. I agree with your approach to OOP. It's a tool, but it shouldn't dominate.
From my experience: Java is stable and has good tools all around it. Python 3 can produce dependency hell so easily, that I just don't like it much, but it looks like a great thingy for quick algo prototyping. JavaScript has a thicker book on how not to program in it, than it's specification book is.
tell me why would anyone learn java in these days? ... like make abstraction on everything where u do not need... i love javaist ppl lets implement db and first what they want to do is 53453 interfaces with 244 abstraction because WHAT IF db will change from mysql to psql.
@@SpuxyYEZThe reasons are simple. One - almost every problem you may run into has been solved on stack exchange in one shape or form already. Second, newer, stable LTS versions, do not break much if anything. Try that with Python 3 or Rust if you like. Third, you have good practices all written down. You just have to apply them to your work. And as far as DB goes, I think hibernate and its variations tend to get that problem solved.
@@SpuxyYEZ I think that is not Java or JVM issue, it is just good coding practice done wrong by clean coders/architects extremists ... I have seen java programs that had more interfaces than code solving business logic ... I like to simplify things, but have seen a lot of unnecessary complex things done in Java by so called "Gurus" or "Distinguished architects" ...
It's not particularly exciting but there's rarely any situations where I feel like I'm fighting Java. As a day job, it's probably one of the comfiest lines of work to be in.
Regarding a performance, my phone can play DST files without a problem now, although I think it is more related to a performance of phone chips than Java used in the decoder. Continue talk about mobile platforms, Kotlin also got a good usage on Apple devices among with Dart, so generally, Kotlin will be considered a truly multi platform and multi purpose language backed by own JVM compatible machine.
I like doing requirements enginneering to understand and interact more with the business side/ user. But I also like development work. You really need the practice of programming. Especially when you're also supposed to do 3rd level support. Reading logs and error messages won't help if you can't read the code. I can't imagine only doing one thing. The systems get more and more complex (see also conways law). The theory (requirements) without practice (the technical side and programming) makes it harder to understand how things work.
if you have a mentorship program to guide people earlier in their career , I will absolutely join it for sure. thanks for this amazing video and I look forward to watching more videos.
I’ve been a Java programmer for 27 years with no end in sight. Imo you have the history 95% wrong but that’s irrelevant now. What’s important is that at a minimum Java is strongly typed and compiled hence suitable for TDD, and still popular because it is widely known and used.
I really love this video I have working as backend developer for 8 months I dont even think I have word to say. I am still new in the field and would probably ask you for more advice to move to mid and senior level. video around that topic would be really helpful.
In the past I did C# for nearly 10 years. Then I had a break of 4 years doing mostly Python. Recently I had to create a small package in C# and I found it really weird. The whole ecosystem and module concepts are so different from all the other languages. The same is true for the community around. Net and C#. I'm pretty sure it's not as bad anymore as when I did C#, especially considering .Net core. Still I can understand why people that never did .Net don't like it. But I must admit that C# was and still is a great language.
As a C# developer, I can say that it is quite depressing working on a .C#/.NET project that has been running for 10+ years without much change. I love the new stuff and I keep updated, but somehow it feels backwards with all the legacy - and I imagine the same for Java. No wonder why many developers look to other new languages. But here I am still standing. I want to make a change and show the better parts of . NET. Blazor is easily the best invention so far.
@@marna_li Hopefully .NET upgrades from now on will be pain free. The change from .NET Framework to .NET Core was a big one but if you already did it, it should be smooth sailing
@@marna_li I can totally relate. We also had a big legacy application doing a million things and I was one of the few that could maintain this beast. Sad but true, often the only choice you have is to change the company or insist on being moved to a fresh project. If you're too kind, they will keep you on the legacy stuff forever.
Working with a JVM these days? Sure… I mean its pretty much pain compensation. Otherwise go up (any strongly typed abstract language like TypeScript), Domain Oriented (like Python for Data Scientists) or low into Rust, Go, C# to CCP / .NetCore. Oracle had its fun… time to get out of it I think.
5:13, C++ 3x1 Java (2,7x1, actually), according to a test at Dave's Garage, another ex Microsoft: ua-cam.com/video/D3h62rgewZM/v-deo.html , if you consider C# is about the same speed as Java: ua-cam.com/video/sJC3JsvhM9o/v-deo.html . 5:35, + C++ also gives you more control over the design too, allowing to make better tools, even for defensive proposes. I heard in a presentation that C++ is also used in "secure critical systems", or something like that. I'm not a bit surprised. I coded my own boundaries checking for any container, and never again had a problem about that that wasn't reported properly. 5:49, Mike Acton about this for his HPC#, an attempt to make C# the new C++: ua-cam.com/video/u8B3j8rqYMw/v-deo.html .
I think the language is overblown, university types put too much on the syntax differences. Its the JVM that counts most and the stuff around the language. Java has great tooling, great libraries, professional support and has been mainstream for so long. I do love what Typescript has done for our UIs recently though and their frameworks. The main issue for Java is its owner. Java versioning can still be painful, but its not as bad as other languages. I also think its worth saying Java is more often used by larger companies and perhaps the subject matter of the work is more rewarding.
Sound arguments, and even though I'm professionally much more about C# and Python (hopefully F# in the future) , I think Java is a fine language. Regardless these aren't surveys but a meta analysis of glassdoor reviews which are easily gamed, so I won't put much stock in the results.
Hello, I have the opportunity to start two free courses, one in C# Fullstack, through the ICT division of a temporary agency, which at the end of the course would allow me to enter a consultancy company with a permanent contract in remote work. And the other course in Java as a programmer (Frontend and Backend) in the banking/insurance sector through a leading company in training, IT consultancy and software development that collaborates with banks and insurance companies, at the end of which I would be hired indefinitely in remote work. Which training course in programming should I choose the one with the C# language or the Java one? Sorry🙏 for my english.
I can't speak to the value of the courses, I don't know anything about them. In my view the difference between Java and C# is negligible from a technical perspective. They are very close to one another in most ways. If you can program in one, it is not a big step to learn to program in the other. In most league tables of languages, Java is more widely used than C#. My advice is that unless you have a reason to pick one tech over the other, then look at the job after the course, rather than the programming language as the deciding factor. What are the people like, how will they support you in your learning and so on. I have several videos on these topics, here are a couple: "20 Questions to ask your next employer" ua-cam.com/video/2Afk9KVEgpE/v-deo.html "What Software Career Progression Looks Like For Junior Developers" ua-cam.com/video/lDQIYYakJGw/v-deo.html
Having coded with both Java and Python I would prefer Java unless we are talking about R&D. I will probably switch to Java soon (from JS/TS) professionally as I see all the positions that interest me in my company are in Java. Somehow I also see that Java experience is accepted to get into Rust or Go jobs which I think will take its place, Go especially.
Great video, its really useful to have your perspective on this topic Dave. I am currently an embedded software programmer, I've used (embedded style) C++ a lot, but am currently forced to use C 🙄. I am thinking of moving into java roles to keep things fresh in my career, and to feel more productive rather than being bogged down with low-level issues and constant debugging. PS: Love the shocked looking smily over Visual Basic at 7:00😆
I also live in the UK, I want to become Java developer but before that do you think it would be better to learn First html,css and JS? According to some jobs offers here in England for Java or backend developers is desirable to know html,css and JS. Not 100% this is the right path but we will see, but I would appreciate any suggestion on this Path. Thank you very much
I think that these are useful skills to have, but also not necessarily a pre-requisite. It depends on the employer. If you have all of them, then you are probably a more rounded developer, but it probably doesn't matter too much where you start. HTML and CSS are not "general purpose" so I'd start with either Java or Javascript, from the list you mentioned, and learn enough HTML and CSS to build the systems that you want to build in Java or JS. It really depends on what you want to do. You can do nice things with HTML & CSS without knowing much about programming, but I think it helps to learn *some* programming first.
Thank you very much for your advise I will consider to learn 1st JS then as you said use Css and html just the necessary for when building a project. Unfortunately I didnt find any software developer apprenticeship yet but I guess in my case without experience what will help to get a foot in the door are personal projects so I can showcase. I work as a catalogue developer for a Global Optical company which involves Data management and analysis. I follow yout channel for while your videos are so helpful and motivational. I just need to watch any of your videos that you probably covered AI taking jobs away from software developers lol Because this is something made me think if it is still really worth to lean programming but gut tells me that I will be successful with some sacrifices like perhaps pay cut if get a junior position.
Thank you for the education. I am learning JavaScript. I am focused on Web Development. I am trying to become full stack. From your video it sounds like Java doesn't work well for Web Development? That it is more of a server-side language? (Back-End/Not Full-stack) Would you say C# is the better approach? I ask because I am interested in finding employment for a medium to large corporations which uses either Java or C#. Thank you for the video.
Neither Java not C# are widely used for web development, projects that use Java or C# usually use a different language for the Web code, Javascript is probably still the most common.
Love the content Dave, any chance you could talk about infrastructure testing? I work in Ops, I'm not a developer, should I be applying TDD to infrastructure as code?
Yes you should, one of the main benefits of writing your IaC is that it becomes testable. Just Google testing strategies for whatever tech you are using in your team, there are bound to be plenty of resources providing methods to write your tests.
@@JayCeeVids Thanks for the reply, I'm trying to find the Dave Farley for Ops. A lot of the testing strategies I've seen is after the fact and separate from writing IaC
i''m looking at the courses available near me, there's an option for web developer which includes Javascript, PHP, HTML, CSS, and separate for Java only I'm guessing it is more thorough, what would be a better choice for someone who doesn't know anything about IT just wants to try a new field? Your opinions would be apreciated!
It depends what you are looking for. If you are interested just because you like learning, or because you are thinking of starting a new career? Starting by learning Javascript is a popular route, but I think that the javascript eco-system is so diverse that it is sometimes hard to find any reasonable definition of "what does good JS code look like". As a beginner, that can be a problem. Java is more constrained, and these days, though still VERY popular in the job market is seen as a bit old fashioned. I think that this is a mistake, and that learning Java is a better place to start if you want to get good at coding than JS. It is a bit more strongly structured, and so "what is good" is a bit easier to answer. Python is a good choice too, and probably, at least in my opinion, a better teaching language than JS or Java. If you are looking for this from a Job perspective, then these are the 3 most popular languages by most counts. If you are a Windows user, another strong candidate is C#.
@@ContinuousDelivery i guess i wanna learn a new modern set of skills that i might use with my current education in electrical installations, or start a new career depends on my efforts and circumstances obviously, just feeling like stuck right now, need a challenge 🙃 and maybe something less manual labor dependent
I have not used any of them for real systems, so don't have much to say. I have, a couple of times, watched presentations on Groovy & Grails, and they looked pretty good. I think that the optional typing in Groovy is a problem for big teams, where I think static typing helps eliminate some problems. My list here though, wasn't really based on my preferences, but more on what counts as "most popular" in terms of use.
Java had only 1 territory from the beginning to rule - Web Development JSP - dead Android - Kotlin has taken over Run Once Run Anywhere - no more a Java-only feature with the advent of containers
C# the Microsoft version of Java? C# has been ahead of Java since at least 2009 and still are, so I'd say more like the other way around. Keep an eye on C# 10, .NET 6 and WinUI, those are the technologies of the future-if Microsoft play their cards well. The encouragement of better practices and design patterns like componentization and modularization, the confidence of doing changes without breaking anything, reusability, testability, etc.-despite being more verbose-are precisely the reasons for choosing Angular framework over React and other similar libraries.
I don't really like php myself but I don't think it's fair to call it not a generel-purpose language. Sure, I wouldn't pick it to for a game, a driver or an operating system, but I wouldn't pick Java or a bunch of other programming languages for that either. php is a mess, but it's long stopped being a server-side web page rendering thing.
@@ContinuousDelivery CLI absolutely. I don't see any downsides to it other than my dislike for the language itself :) Mobile, probably no. Could make it work but I don't see why :)
But mobile is pretty niche, not in number of users but definitely in the number of languages you can use efficiently. We could look at even more niche Roku sticks (which are pretty big in US btw), and say only C++ is the general programming language because you can only code for Roku in C++ and BrightScript and BrightScript only works on the device.
Depends what you are learning it for. If you want to be a "better programmer" then I think knowing more than one language gives you a better perspective on the things that matter and the things that are just conventions for the language that you know. Python is widely reported as the most popular language at the moment os there is nothing wrong with learning that. I would recommend that you learn TDD, if you don't do that already, before you pick up a second language. I have a free TDD tutorial on my training site which may help you get started with that: courses.cd.training/courses/tdd-tutorial
Here's the problem with Java... Its practical and boring and practical and boring doesn't make much of a language that you can brag about. People love difficult languages because they become their ego language. "Did you see my solution in !".
Used to work with Java for like 2 years and thought I hated it. Only after switching jobs recently and start working with js and python it's made me realize the importance of a strongly typed language, specially when working with other people.
Yes, I think it is easy to miss the reasons for something if you haven't seen the problem it is meant to solve yet.
@himanshusharma6713 Some people often use the terms 'explicit types' and 'strongly typed' interchangeably.
@br0ken_107 it's not strongly typed it just doesn't make stupid inferences like JavaScript to allow atrocities like adding empty arrays with empty objects, but you still can change variables types dynamically without explicit parsing, gosh In python you doesn't even have a way to create unmutable values (const or final), so no, python is not strong typed, it's just not as dumb as JS
Totally agree with Static Typing.
Java was invented when corporations realized that, for the average programmer, pointers and memory management were forever going to be a sinkhole of time and productivity.
Java was the language that helped me get into IT, relocate to other country and it payed the bills for several years :)
For those who like Java and not afraid of it weird verbosity I started working on a playlist with Java interview Q&A: ua-cam.com/video/LeqNBbFi6Z0/v-deo.html
Having been on the internet for a long time...it's the first time I hear someone so careful not to harass or belittle other people's efforts or knowledge.we need more of you.
Thanks gratefully.
I love Java, I'll finish uni this year in France in October but I've already got a java full stack job at 22 that will start just after my studies. I'm so eager to have the opportunity to work with and master this language.
Hardly anyone will say this out loud, they'd rather complain about it's flaws. But the results are clear, even in the marketplace: Java. Not in every case, but certainly most. Even if one hates working in the language ecosystem.
Hi Dave , love your angle on things ( and your t shirts) . We developers are very lucky and would benefit from reminding ourselves of this on a regular basis. I work remotely from Australia for UK clients in the rail industry - I get to live in a sunny climate , write code and play with big trains ! How good is that.
Btw. I grew up in the Midlands , and it is so refreshing to hear your straight talk and familiar accent. Keep up the excellent content. live long and prosper.
Yes I grew up in Birmingham 😉
I remember transitioning from engineering to computer science, which moved me from using Matlab to using Java. Java was absolutely more verbose. That being said, while brevity is the soul of wit, Matlab more reminded me of that “Why waste time say lot word when few word do trick” quote from the office. It’s fewer words but it’s not easier to understand in the least.
Interesting to leave out Go from this comparison. I see more Go than Python when applying for software engineer jobs.
I love Java, and I have been developing Enterprise apps for more than 10 years in Java Projects.
Can you mentor me ?😊
My only beefs with Java are:
- memory bloat. The joke is that the Java motto is "your RAM is all mine". You have to "jail" the JVM using a command line option, and then you are back to know everything about the program implementation, or else shoot from the hip and wish for the best.
- how easy it is to shoot yourself in the foot with threads and protected methods. To me Java is no better than C++ on that matter.
The language is otherwise so elegant. But I wish exceptions would go away, in any language. This was an experiment that has reached it's shelf life limit. Rust is showing a very interesting alternative.
Yes, concurrency is horrible in Java, although there are a LOT of ways to help with that, built in the language. But, just like many other things, one needs to actively learn them, as they are anything but intuitive. Likewise, protected visibility is VERY useful when done right, but can easily be abused, even without the dreaded diamond problem.
The memory bloat is something that I personally have not yet encountered - but maybe I just overlooked it. I do tend to try and find resource leaks (and memory leaks) while programming, which in turn might mitigate that, but that behavior is also everything but easy or intuitive.
So yes, those are real problems. Like most other problems, they can be circumvented, and like most other problems, one needs to learn about them to be able to do that. I thank uncle bob and Josh Bloch for that in my case =) Not sure about exceptions, though - just checked exceptions, they CAN be really *really* annoying.
@@ponypapa6785 let me clarify that I meant bloat, not leak. The JVM does a nice job of optimizing it's GC, but at the price of leaving a lot of memory unused. Amusingly our company's first big Java program worst bug was a memory leak: a bug missed removing items from an obscure list. The program died once every week..
The AWS developers have a nice take on languages, ranked according to energy use (a weighted sum of RAM and CPU use I guess) and it is telling.
@@ponypapa6785 about exceptions my beef is that one is tempted to ignore them (the default in most languages) and pass the buck to the caller, which may not have the context needed to handle them properly.
The Rust's result approach seems to promote a better programming habit. (I am very new to Rust, so the conditional. I have been using exceptions since the '80s--in Ada.)
Count me in the not-so-happy-with-java group, but it might just be my grumpy self.
I like python much less than I should.
And I like javascript a lot more than I should.
As a confused beginner, and one who has tried out Python, HTML, CSS and JS, and now settled for Java and seem to be really loved it, (alongside SQL). due to all the negative sentiments people throw at the language, I happen to need motivation on a daily, like someone saying to me "Java is awsome, gain mastery in it" this you've done and with enough reasoning to support the claim, the much I can say is "THANK YOU" :)
Another great video, thanks :) -- I transitioned from Rails to JavaScript to now Java and I like working as a Java developer by far the most. It's a great job.
Another down-to-earth and informative video Dave. Just picked up a copy of your book...
As a CS Student , I used to love Java
Here’s why I changed my mind:
📍when you are stuck on some weird errors, it’s difficult to find a solution
📍 setting up a project is so tedious (maybe that’s just Eclipse)
📍 The documentation is also poorly explained
In my opinion learn something which you are comfortable with and which pays the bills and the job is not less open
@@abhishekpatra7954 I am a Data Scientist Junior now, I work with Python mainly.
Eclipse would be an absolute nighmare, especially for beginners.
4:20, I can't even remember if I ever had a serious bug using pointers. Here go my tips for everyone, who use to have problems with that, to get rid of this issue once and for all:
- If you have to allocate memory, don't do that directly: *use containers from the standard library* , STL. They have their size hidden from you, and manage it automatically.
- When *traversing those containers, use their own iterators* (OO pointers). Member-f()s 'begin' and 'end' provide them for you. Just keep a model like this:
*for_each (container.begin() + offset, container.end() - premature_end, some_algorithm);*
With offset = 0. If you just want to run all the way _(default is copy, but you can reference that, with &)_ :
*for (auto &a_var_not_ptr: container) some_algorithm (a_var_not_ptr);*
In any of these cases you deal with pointer directly.
- *Reallocations may invalidate previous iterators* :
std::vector container;
auto it = container.cbegin() + K;
container.push_back (M); //May invalidate.
auto x = *it; //May crash.
There are 2 main solutions for this:
a) Just "refresh it", after push_back:
auto it = container.cbegin() + K; // ≃ F5 in a webpage.
auto x = *it; //Guaranteed to work.
b) *Recommended: reserve memory* right after container creation:
//Chandler Carruth: _"We allocate a page each time. This is astonishing fast!"_
container.reserve (1024);
container.push_back (M); //Just added M, not reallocate.
auto x = *it; //Ok.
There *won't has a new reallocation, as long as container.size()
Just to be clear, I was talking about C++ when Java was invented. There wasn't a standard template library then, and no containers for memory allocation.
My main complaint about Java is that there is much better alternative (Kotlin) that could be integrated into existing projects, yet I absolutely cannot convince my team to learn anything new. I actually had to fight for months so we'd upgrade to Java 17 and even then it only happened in one of our projects
I have switched to Kotlin and I hate it. the only problem with java is that most have to stay on older versions and support lots of legacy code, at the same time newer java versions offer many cool features that kotlin has.
This comment aged badly lol
@@lufenmartofilia5804 How so?
7:59 I am learning java, and indeed, when I look up information on the internet and I get an answer actually conceived for c#, I most of the time don't look any further, because it almost always answers my java question.
I work on HPC software and I remember a professor I had said you could use c,c++, or even python for the code but if you wrote the code in java he would throw you out the window. He was also not wrong on that when we looked at the numerical performance. Every version of BLAS I have encountered for Java is much slower than the ones available for c based languages. Often 10s to 100s of times slower. However, Python makes it easy to hand off all that heavy lifting to c and c++ while Java calling to a c based BLAS is also slow. So it is easy to get code working and correct in Python and then update the algorithm to be efficient and then push off the performance to lower level languages by calling existing high performance libraries. That is why we have things like numpy, tensorflow, and torch.
I just started my new job as a java programmer after changing carreers and i do agree 100%.
It was a pleasure to listen to you. Nicely said.
Owning a company that has Java legacy codebase is worst thing possible.
At this point Java development is pure rent seeking business, and have to die with sinking companies it leeches on.
me: why do I need to add getters and setters to every accessible property?
my java mentor: abstraction! you can override the get and set behavior
me: why do we use Lombok?
my java mentor: because we never actually override the get/set behavior
BeCaUsE sOnAr SaYs So!
also you CAN override the generated getters and setters in subclasses, but when you are overriding Getters and setters for POJOs, then there is something SERIOUSLY wrong with your approach.
Plus: IMO, the only reason for (plain) setters is: regulate write-access to a variable. If necessary, fail-safes can be built in to ensure correct behavior without then having to change the API. The only reason for explicit getters should, again, be API and the idea of defensive copying.
However, those are MY opinions that very few of my colleagues seem to share =)
Java 17's records made that a lot easier: you don't have to write getters because the language provides one for each declared property, and you don't need to write setters because the proprties are assigned when creating the instance (records are immutable)
@@diegoshevek5927 records are so effing great... basically remove need for lombok entirely =)
My natural progression to safety: C -> C++ -> Java -> Scala -> Haskell ->? Idris/CoQ??? Damn why I’m not a mathematician!?
I've been professionally working with Python for over 5 years now. I love the language, and think it is certainly fine for large projects. I do, however, understand the aspect of reliability in the community. For some frameworks like Django, typically the online help is really solid. However when you start looking through some of the data science communities the code quality jumps off a cliff. I think this is related to the lower entry barrier. There are trade offs. It is nice to see people getting into code, but as a professional it can be a little grating constantly seeing low quality code. I promise you, there are some of us out here trying to hold ourselves to a higher standard.
I know that to be true, my point is that I don't think that there is anything inherent in the language and common tools to promote that, whereas I think that there are things in the language and tools around Java that do. We could certainly debate that, but that is really what I meant in my comment about "I'd only do a Python project with others if they did great TDD". TDD is one approach to replacing, and supplementing, the protections that static typing, and strong tools offer.
I think Python is a great tool, but to do a great job requires us to be expert and on our game. Java does too, but just a little less expert and a little less on our game YMMV!
It's because data science code is oftentimes written by people that are scientists first and programmers second. You see this in a lot of code written by scientists - it's a giant tarball. Language hardly matters, I've seen unholy messes of Java written by scientists in the past too.
@@bobbycrosby9765 Yes, there is a lot of very bad code written by scientists 😬 I think that they suffer the "smart-person's problem" when it comes to SW "how hard can it be - its not rocket science" - and the trouble is that SW can be extremely hard, but it doesn't look like it on the surface.
@@ContinuousDelivery Python has strong typing... IT is something you Discovery after the Basics of the language. IT is optional though, but required to be used with a lot of frameworks and libraries.
@@robertmazurowski5974 it has obvious strong typing and you spot it as soon as you add a string and an int together :-)
Over the last 18 years or so I’ve coded in PHP, JavaScript, TypeScript, Ruby, Python (tell me you were a web dev without telling me 😂) and now Java as my day-to-day, professional language. After a period of adjustment, I find Java to be one of the most satisfying languages to code in. Just enough “optional” low-level control to be performant and powerful, a good type system, and most high-level features (like garbage collection) active by default for when I don’t need to think about them. And it feels good knowing there are whole teams of people whose job it is to make the language better over time.
I have done quite a few things in my professional career, but being (java) programmer is by far the best.
At one time, I thought Java was the best programming language for back-end development. But now believe that Go/GoLang is the best programming language for back-end development (Having used Java, C#, Python, Ruby, JS/TS(NodeJS).
Interesting: I have tried Prometheus on a 4GB mini-pc home server, and it ended badly. The (Linux) machine would crash once or twice a week. It was going out of memory. Prometheus would quickly take more and more memory until almost all was gone. When I looked at any options to restrict RAM use, I found that the max RAM used was hard coded, and that the Go GC would quickly take it all. I uninstalled Prometheus. I guess 4 GB is puny in the cloud?
Love your ideas sir!!! Always valuable!
I transitioned from Java into Java 2.0 (Kotlin) recently so I'm even happier!
I would love to hear your take on Kotlin as Java alternative. Java and Kotlin interchangeable these days for a programmer?
Kotlin, Scala etc serve as testbeds for future java features. I won't make the switch unless I am programming for Android
@@lhxperimental very true I have liked koltin before but now no ,I find it very mess trying to shortcut everything with useless features
@@techtutorvideos I talked about some shortcut feature in Kotlin. trying to solve everything in one language can lead mess
Okay, don't roll your eyes, but C++ has come a long way:
Pointers: When I tell people I'm a C++ programmer they say "Wow! You really like all that memory management?" In modern C++, unless you're directly communicating with hardware (embedded systems), you should basically never, ever use a raw pointer - and it should even be rare to use a shared_pointer/unique_pointer. I really do not have to worry about memory management. Those days have long gone.
OOP: C++ is not all about objects! I think functions should be the default - write a class when it makes sense (which is quite often, I'll admit). When I was being taught C++ at uni there was an emphasis on inheritance, which should actually be quite niche. Complicated inheritance trees are awful. These days good code reuse comes from templates and composition of classes/functions with no side effects.
Okay, I lied: The code I work on has a legacy core and so I *do* have to deal with memory management, but I've written sizeable projects before with literally no pointers (not even unique/shared).
I agree, I find memory issues in modern C++ to be a nothing-burger, it's easy to write memory safe code. The problem is, let's say you are working with a team of 10 people on a legacy codebase and half of them are terrible at C++ and constantly use raw pointers everywhere. Java just limits how bad the code written by your coworkers can be, and I love it.
I've been a C++ programmer for 30 years. I love it. Flexible, powerful, and performant, and implementations build native executables by default. I agree with your approach to OOP. It's a tool, but it shouldn't dominate.
Java features such as remote debugging, OQL (for heap analysis), JFR are very useful diagnostics tools .
Very nice video. Yes, love of learning is very crucial for working in IT and software engineering!
From my experience: Java is stable and has good tools all around it. Python 3 can produce dependency hell so easily, that I just don't like it much, but it looks like a great thingy for quick algo prototyping. JavaScript has a thicker book on how not to program in it, than it's specification book is.
tell me why would anyone learn java in these days? ... like make abstraction on everything where u do not need... i love javaist ppl lets implement db and first what they want to do is 53453 interfaces with 244 abstraction because WHAT IF db will change from mysql to psql.
@@SpuxyYEZThe reasons are simple. One - almost every problem you may run into has been solved on stack exchange in one shape or form already. Second, newer, stable LTS versions, do not break much if anything. Try that with Python 3 or Rust if you like. Third, you have good practices all written down. You just have to apply them to your work. And as far as DB goes, I think hibernate and its variations tend to get that problem solved.
@@SpuxyYEZ I think that is not Java or JVM issue, it is just good coding practice done wrong by clean coders/architects extremists ... I have seen java programs that had more interfaces than code solving business logic ... I like to simplify things, but have seen a lot of unnecessary complex things done in Java by so called "Gurus" or "Distinguished architects" ...
Best time for now was programing C#, most comfortable language for me.
Informative and eloquent! Thank you!
Nicely explained!
Only thing I'd say is that we should start comparing with typescript rather than javascript.
Thanks for this video, man. OpenJdk has some projects on going they would make java run faster and take less memory. Also, we have GraalVM now.
its true that java is very performant. if you give it memory. a lot of memory.
Even though Java has a great ecosystem, but when writing business logic, it just sucks because the language is not very flexible (expressive).
It's not particularly exciting but there's rarely any situations where I feel like I'm fighting Java. As a day job, it's probably one of the comfiest lines of work to be in.
Regarding a performance, my phone can play DST files without a problem now, although I think it is more related to a performance of phone chips than Java used in the decoder. Continue talk about mobile platforms, Kotlin also got a good usage on Apple devices among with Dart, so generally, Kotlin will be considered a truly multi platform and multi purpose language backed by own JVM compatible machine.
I like doing requirements enginneering to understand and interact more with the business side/ user. But I also like development work. You really need the practice of programming. Especially when you're also supposed to do 3rd level support. Reading logs and error messages won't help if you can't read the code. I can't imagine only doing one thing. The systems get more and more complex (see also conways law). The theory (requirements) without practice (the technical side and programming) makes it harder to understand how things work.
Dave, love your stuff as always. Cheers!
if you have a mentorship program to guide people earlier in their career , I will absolutely join it for sure.
thanks for this amazing video and I look forward to watching more videos.
They didn't especified the java version, I can't do anymore Java 5-6 code bases hahahaha
I’ve been a Java programmer for 27 years with no end in sight. Imo you have the history 95% wrong but that’s irrelevant now.
What’s important is that at a minimum Java is strongly typed and compiled hence suitable for TDD, and still popular because it is widely known and used.
Amazing watch, thank you!
Spoken like a true veteran👌you Sir have just earned one more subscriber
Great video, thanks Dave!
I really love this video
I have working as backend developer for 8 months
I dont even think I have word to say.
I am still new in the field and would probably ask you for more advice to move to mid and senior level.
video around that topic would be really helpful.
Thanks for the suggestion, I will think about it.
Weird there's no other languages mentioned, just Architect/DevOps/Full Stack
In the past I did C# for nearly 10 years. Then I had a break of 4 years doing mostly Python. Recently I had to create a small package in C# and I found it really weird. The whole ecosystem and module concepts are so different from all the other languages. The same is true for the community around. Net and C#. I'm pretty sure it's not as bad anymore as when I did C#, especially considering .Net core. Still I can understand why people that never did .Net don't like it. But I must admit that C# was and still is a great language.
As a C# developer, I can say that it is quite depressing working on a .C#/.NET project that has been running for 10+ years without much change. I love the new stuff and I keep updated, but somehow it feels backwards with all the legacy - and I imagine the same for Java. No wonder why many developers look to other new languages. But here I am still standing. I want to make a change and show the better parts of . NET. Blazor is easily the best invention so far.
@@marna_li Hopefully .NET upgrades from now on will be pain free. The change from .NET Framework to .NET Core was a big one but if you already did it, it should be smooth sailing
@@marna_li I can totally relate. We also had a big legacy application doing a million things and I was one of the few that could maintain this beast. Sad but true, often the only choice you have is to change the company or insist on being moved to a fresh project. If you're too kind, they will keep you on the legacy stuff forever.
Tell this to an android developer for whom the sdk and apis are constantly changing with barely any structure.
Great information, thank you!!
I am surprised Rails didn't come in the list.
Having good type information is definitely useful and python’s type hints and tools like mypy help a lot.
Working with a JVM these days? Sure… I mean its pretty much pain compensation. Otherwise go up (any strongly typed abstract language like TypeScript), Domain Oriented (like Python for Data Scientists) or low into Rust, Go, C# to CCP / .NetCore. Oracle had its fun… time to get out of it I think.
Well balanced sir, well done.
5:13, C++ 3x1 Java (2,7x1, actually), according to a test at Dave's Garage, another ex Microsoft: ua-cam.com/video/D3h62rgewZM/v-deo.html , if you consider C# is about the same speed as Java: ua-cam.com/video/sJC3JsvhM9o/v-deo.html .
5:35, + C++ also gives you more control over the design too, allowing to make better tools, even for defensive proposes. I heard in a presentation that C++ is also used in "secure critical systems", or something like that. I'm not a bit surprised. I coded my own boundaries checking for any container, and never again had a problem about that that wasn't reported properly.
5:49, Mike Acton about this for his HPC#, an attempt to make C# the new C++: ua-cam.com/video/u8B3j8rqYMw/v-deo.html .
I think the language is overblown, university types put too much on the syntax differences. Its the JVM that counts most and the stuff around the language. Java has great tooling, great libraries, professional support and has been mainstream for so long. I do love what Typescript has done for our UIs recently though and their frameworks. The main issue for Java is its owner. Java versioning can still be painful, but its not as bad as other languages. I also think its worth saying Java is more often used by larger companies and perhaps the subject matter of the work is more rewarding.
Love that t-shirt by the way. 😁
That's nice. How did you get that full stack job, learning by yourself programming or you got the skills at uni?
Thank you for sharing the knowledge
My pleasure
If you work with java do explore golang
Java can pay the bills. But I find scala far more rewarding to both my pockets and my intellect.
Sound arguments, and even though I'm professionally much more about C# and Python (hopefully F# in the future) , I think Java is a fine language. Regardless these aren't surveys but a meta analysis of glassdoor reviews which are easily gamed, so I won't put much stock in the results.
That´s really quite surprising because in my country it seems that Java is not so in demand. Other languages like C# or Python are more in demand.
Omg this Topic just made my day greate:)
I love your shirt. And also the content, but the shirt in this video made me smile 😃
How long it takes to get a job in java starting from zero?
Hello, I have the opportunity to start two free courses, one in C# Fullstack, through the ICT division of a temporary agency, which at the end of the course would allow me to enter a consultancy company with a permanent contract in remote work.
And the other course in Java as a programmer (Frontend and Backend) in the banking/insurance sector through a leading company in training, IT consultancy and software development that collaborates with banks and insurance companies, at the end of which I would be hired indefinitely in remote work.
Which training course in programming should I choose the one with the C# language or the Java one?
Sorry🙏 for my english.
I can't speak to the value of the courses, I don't know anything about them. In my view the difference between Java and C# is negligible from a technical perspective. They are very close to one another in most ways. If you can program in one, it is not a big step to learn to program in the other. In most league tables of languages, Java is more widely used than C#.
My advice is that unless you have a reason to pick one tech over the other, then look at the job after the course, rather than the programming language as the deciding factor. What are the people like, how will they support you in your learning and so on. I have several videos on these topics, here are a couple:
"20 Questions to ask your next employer" ua-cam.com/video/2Afk9KVEgpE/v-deo.html
"What Software Career Progression Looks Like For Junior Developers" ua-cam.com/video/lDQIYYakJGw/v-deo.html
@@ContinuousDelivery Thanks a lot for the answer. God bless you.
🇮🇹
Having coded with both Java and Python I would prefer Java unless we are talking about R&D. I will probably switch to Java soon (from JS/TS) professionally as I see all the positions that interest me in my company are in Java. Somehow I also see that Java experience is accepted to get into Rust or Go jobs which I think will take its place, Go especially.
Great video, its really useful to have your perspective on this topic Dave. I am currently an embedded software programmer, I've used (embedded style) C++ a lot, but am currently forced to use C 🙄. I am thinking of moving into java roles to keep things fresh in my career, and to feel more productive rather than being bogged down with low-level issues and constant debugging.
PS: Love the shocked looking smily over Visual Basic at 7:00😆
I also live in the UK, I want to become Java developer but before that do you think it would be better to learn First html,css and JS?
According to some jobs offers here in England for Java or backend developers is desirable to know html,css and JS.
Not 100% this is the right path but we will see, but I would appreciate any suggestion on this Path.
Thank you very much
I think that these are useful skills to have, but also not necessarily a pre-requisite. It depends on the employer. If you have all of them, then you are probably a more rounded developer, but it probably doesn't matter too much where you start. HTML and CSS are not "general purpose" so I'd start with either Java or Javascript, from the list you mentioned, and learn enough HTML and CSS to build the systems that you want to build in Java or JS.
It really depends on what you want to do. You can do nice things with HTML & CSS without knowing much about programming, but I think it helps to learn *some* programming first.
Thank you very much for your advise I will consider to learn 1st JS then as you said use Css and html just the necessary for when building a project.
Unfortunately I didnt find any software developer apprenticeship yet but I guess in my case without experience what will help to get a foot in the door are personal projects so I can showcase. I work as a catalogue developer for a Global Optical company which involves Data management and analysis.
I follow yout channel for while your videos are so helpful and motivational. I just need to watch any of your videos that you probably covered AI taking jobs away from software developers lol
Because this is something made me think if it is still really worth to lean programming but gut tells me that I will be successful with some sacrifices like perhaps pay cut if get a junior position.
Insightful video
Thank you for the education. I am learning JavaScript. I am focused on Web Development. I am trying to become full stack. From your video it sounds like Java doesn't work well for Web Development? That it is more of a server-side language? (Back-End/Not Full-stack) Would you say C# is the better approach? I ask because I am interested in finding employment for a medium to large corporations which uses either Java or C#. Thank you for the video.
Neither Java not C# are widely used for web development, projects that use Java or C# usually use a different language for the Web code, Javascript is probably still the most common.
@@ContinuousDelivery Thank-you.
Great video!!!
You have a point there but I like c++ so rip
Love the dig at EJB, what the hell was that all about?!
AFAIK Java was inspired by Objective-C rather than C++
great video!
Video is spot on
Love the content Dave, any chance you could talk about infrastructure testing? I work in Ops, I'm not a developer, should I be applying TDD to infrastructure as code?
Yes you should, one of the main benefits of writing your IaC is that it becomes testable. Just Google testing strategies for whatever tech you are using in your team, there are bound to be plenty of resources providing methods to write your tests.
@@JayCeeVids Thanks for the reply, I'm trying to find the Dave Farley for Ops. A lot of the testing strategies I've seen is after the fact and separate from writing IaC
OMG I loooove your t-shirt 😍
I knew I had the best job in the world! 😊
to become a java developer, does it require to work in office or remote work will be fine?
However, Rust is the most loved programming language and has been for 5 years now.
Maybe, but still a minority sport so far.
java programmer job is number one for me as well.
My experience with java is so bad that it's probably going to push me out of the industry after a long career in languages.
Well said!
i''m looking at the courses available near me, there's an option for web developer which includes Javascript, PHP, HTML, CSS, and separate for Java only I'm guessing it is more thorough, what would be a better choice for someone who doesn't know anything about IT just wants to try a new field? Your opinions would be apreciated!
It depends what you are looking for. If you are interested just because you like learning, or because you are thinking of starting a new career?
Starting by learning Javascript is a popular route, but I think that the javascript eco-system is so diverse that it is sometimes hard to find any reasonable definition of "what does good JS code look like". As a beginner, that can be a problem. Java is more constrained, and these days, though still VERY popular in the job market is seen as a bit old fashioned. I think that this is a mistake, and that learning Java is a better place to start if you want to get good at coding than JS. It is a bit more strongly structured, and so "what is good" is a bit easier to answer.
Python is a good choice too, and probably, at least in my opinion, a better teaching language than JS or Java.
If you are looking for this from a Job perspective, then these are the 3 most popular languages by most counts. If you are a Windows user, another strong candidate is C#.
@@ContinuousDelivery i guess i wanna learn a new modern set of skills that i might use with my current education in electrical installations, or start a new career depends on my efforts and circumstances obviously, just feeling like stuck right now, need a challenge 🙃 and maybe something less manual labor dependent
great video😍
David, what are your thoughts on Groovy and Grails. Micronaut?
I have not used any of them for real systems, so don't have much to say. I have, a couple of times, watched presentations on Groovy & Grails, and they looked pretty good. I think that the optional typing in Groovy is a problem for big teams, where I think static typing helps eliminate some problems. My list here though, wasn't really based on my preferences, but more on what counts as "most popular" in terms of use.
Java had only 1 territory from the beginning to rule - Web Development
JSP - dead
Android - Kotlin has taken over
Run Once Run Anywhere - no more a Java-only feature with the advent of containers
Not really, Java was originally written as a language for embedded systems. 🤔
C# the Microsoft version of Java? C# has been ahead of Java since at least 2009 and still are, so I'd say more like the other way around. Keep an eye on C# 10, .NET 6 and WinUI, those are the technologies of the future-if Microsoft play their cards well. The encouragement of better practices and design patterns like componentization and modularization, the confidence of doing changes without breaking anything, reusability, testability, etc.-despite being more verbose-are precisely the reasons for choosing Angular framework over React and other similar libraries.
I agree it's miles ahead now but it definitely started out at the Microsoft version of Java
Thats how it started life, after j++, j# and a bunch of shady illegal stuff to sabotage java (they paid millions in lawsuits)
Java/JVM frameworks and ecosystem are the best.
You wish C# only exists because of Java and has never replaced it and only competed on a superficial level.
I don't really like php myself but I don't think it's fair to call it not a generel-purpose language. Sure, I wouldn't pick it to for a game, a driver or an operating system, but I wouldn't pick Java or a bunch of other programming languages for that either. php is a mess, but it's long stopped being a server-side web page rendering thing.
Ok, would you build a command-line tool with it, or a non-web-based mobile app? I have only ever seen it used for web apps.
@@ContinuousDelivery CLI absolutely. I don't see any downsides to it other than my dislike for the language itself :) Mobile, probably no. Could make it work but I don't see why :)
But mobile is pretty niche, not in number of users but definitely in the number of languages you can use efficiently. We could look at even more niche Roku sticks (which are pretty big in US btw), and say only C++ is the general programming language because you can only code for Roku in C++ and BrightScript and BrightScript only works on the device.
At late age I start learning python , so I will continue with or learn Java
Also, how u think I better programer
Depends what you are learning it for. If you want to be a "better programmer" then I think knowing more than one language gives you a better perspective on the things that matter and the things that are just conventions for the language that you know. Python is widely reported as the most popular language at the moment os there is nothing wrong with learning that. I would recommend that you learn TDD, if you don't do that already, before you pick up a second language. I have a free TDD tutorial on my training site which may help you get started with that: courses.cd.training/courses/tdd-tutorial
@@ContinuousDelivery Thanks Dave for valuable guidance
Java retirement is 15 age if you genuis
Here's the problem with Java... Its practical and boring and practical and boring doesn't make much of a language that you can brag about.
People love difficult languages because they become their ego language. "Did you see my solution in !".