Object Oriented Java

Object Oriented Java Overview
During this episode, Mark and Justin get the Eclipse Integrated Development Environment(IDE) installed and setup. Additionally, they install the Java Development Kit(JDK) that is required for compiling and running Java programs.
Clock icon0h 24m
[MUSIC] Greetings everyone and welcome to another exciting episode of DevPro.TV. I'm your host Justin Dennison, and in today's episode, well we're getting started with Java, more specifically we've gotta get Java set up. And also we have to install an IDE, whatever that is. And here to help us on that adventure is Mr. Mark Davis. How you doing today Mark? Hey, doing well Justin, thanks for asking. That is that is good to hear. Now before we worry about getting everything installed. Why would we even care about Java? When I think of Java, I think of coffee. But from a programming standpoint, why do we care about Java? So I'm also a big fan of coffee, and I think we all are here. Every programmer loves coffee obviously. But yeah, Java is a language, it's still pretty popular. It's commonly in use around the world. Lots of companies still use it, as a primary language or secondary. Lots of the rankings still have it near the top, as far as how useful it is in the industry. So it is very useful, but how does it compare to other languages like, I don't know I'm not a big Python proponent. Why would I choose Java over Python for a project? So Java compiles first and Python uses run time interpretation. So generally Java is gonna be faster for your general use kind of stuff than Python is. So you said a phrase there Mark, run time interpretation, what is that? I know I use Python, I just think it's magic, I just use it. So how are those different? Can you give us a little bit more detail on that compilation from Java and runtime interpretation from Python stance? Yeah, so the difference between scripting languages and languages that you actually sort of compile into byte code for faster execution before you run them. So is that why we would care about Java? It's a little bit faster than Python and it's used wildly today. Anything else that we need to know about Java? Yeah, I just think it's got a lot of momentum and there's a lot of work that's already been done. There's a lot of good libraries out there for Java, and one of the fundamental axioms of programming is that you shouldn't repeat yourself, right? Don't repeat yourself, DRY and so yeah, it's good to draw on the work other people have done and use that to build your programs, as long as it's legal. [LAUGH] That's an important thing. As long as it's legal, remember that. We've said that here, so don't do anything crazy. Well you've got me convinced, I'm ready to get started. So how do I get started Mark? All right, well we're gonna go to these URLs. We're gonna download the Java Development Kit, and we're gonna download Eclipse here. So- So what is the Java Development Kit, while you're getting that up on the screen? So there's a Java Runtime Environment, which is sort of included as part of the JDK. But that's only if you want to execute Java programs. If you wanna actually have more than just the JVM and be able to compile them and all that good stuff, you've gonna need to download the JDK too. So the JDK is actually gonna, like I can write text and as long as its valid Java code. And then it becomes a Java program whereas the runtime is for Java programs that are already created. And I actually wanna run them on my computer, I've got that bulled down- Yeah. Appropriately, all right. I think it's a pretty good explanation. So yeah, I mean we've got it on with a JDK. So we can run Javac in our command line. Or use our IDE or whatever we're doing to comply any given code. So we can just go down here, and you're gonna look for the one for your OS. The latest version's pretty good,yYou just click here. Accept license agreement, and download whichever executable what you want. And while we're at it, we're also gonna get Eclipse for later. So you wanna go here to eclipse.org/downloads. The current version is Eclipse Neon, but Eclipse Axiom is actually coming out very soon, and 64-bit is the one that we're gonna get. So once we have those files, we're just gonna run the JDK installation. And you might have to do that as an administrator or give it the necessary permissions. So Mark, I noticed that you're doing this on a Windows. But these same steps, I mean very similarly hold true for Linux and Mac, is that correct? Yeah, I would say you generally wanna do the same thing. If there are any issues, you can reach out to me by email. It's markd315@gmail.com, or there's a lot of resources online doing a similar thing, where we could help you get it setup and installed. So Mark is the installation of the JDK is it something that takes a while or is it kinda just one of those flickers installation or is it kinda magic behind the scenes? What should we expect when we installing the JDK? I don't think the JDK will take as long as Eclipse will, but Eclipse sort of has a lot of like resources and stuff that it needs to install on the right directory on your computer. So it might take a little longer, we'll try and talk a little bit during the Eclipse installation. All right, so yeah, it's up on the computer now, we can just click Next. We're gonna wanna just install everything, I think. All of these features, development tools, source code, public jre, that way we just got everything we need. Well, that looks like it is taking a little longer than we would like. So let's use some TV magic to go ahead and speed that up. Yep, we've done that, all right. So coming back to our screen here. The progress bar finished, and we're just gonna install in the default directory, that'll work fine. And this one should not take as long. So compared to C++, I would like to mention that Java is not as dependent to pointers and stuff like that. There is a little more freedom with regard to just referencing objects directly. I think that that's another good advantage to mention over the competitor languages. What do you think, Justin? I've messed around with pointers before. Pointer arithmetic is where it really threw me off when I was in C land. Where I could not only increment the position of the pointer but also do position arithmetic and then modify a value. So you're telling me that Java just kinda abstracts all of that away. And well I can just reference an object by its variable name instead of actually getting low level access. Yeah. Now is there some of detriment to that as far as performance or are there other things that I need to consider since that is the case? I don't have low level kind of bit fiddling typeability. Yeah, I would say that there's definitely a tangible performance lost there. Depending on how you're accessing these variables. And so that's something we should take into account. Look at the needs of your project and figure our the best tool for the job. You've got a toolbox in front of you. You got a hammer, you got a saw, you kinda got to decide, which is the best one to approach this problem with? Well, that is something you definitely have to take into account, because I've been plagued by that premature optimization bug that I think a lot of people do. I have this unconscious bias to, let me see how fast I can make this go. And usually all it does is cause me a lot of headache, a lot of heartache, and well then I don't have anything that runs. So I'm a big proponent of make things happen now, instead of worrying about how fast it is. Now if it makes you feel any better, I have seen some, in very specific applications, Java is pretty fast, that JVM is pretty fast. And well I just said the word JVM, but the acronym Mark, I'm gonna have to ask you can you expound on what JVM is for us? Yeah, so the JVM refers to the Java Virtual Machine. And it's a virtual machine that runs on sort of all these different hardwares. And it makes it so that you can sort of run Java code on any different platform. You can just compile it once and run anywhere. And that's a really good feature of the Java language is that you have that capability. It's really strong, but it looks like that our JDK has successfully installed. So go ahead and close out of this, and let's get Eclipse running. Do the same thing, run as Administrator, and we're gonna wanna confirm that. So Mark, I know before the show you told me that Eclipse was gonna take a little bit while to run so we're kind of jumping ahead a little bit and getting that started up. While we talk about Eclipse and some other niceties. So, we're gonna let that get started so you can get started as well but then we'll probably veer off to some other fun times. All right. So yeah. Like Eclipse is, compared to the competition, I think Intelligia is another good IDE. There's a lot of good competition out there, but Eclipse is the one that's kind of been around the longest. There's sort of a lot of plugin support for it and a lot of different things it can do. So that's the one we're going to use. If you've got a different preference, I think you're entitled to that. People like doing different things in programing everyone has sort of their own little way of doing it. And yeah, go for it. So you have chosen Eclipse just because that's your personal preference. Yeah. And you kind of have an at homeness, right with Eclipse but I'm sure there's features that you will show us in due time that you feel that Eclipse is a great IDE, right? Yeah. Eclipse can fix a lot of your problems for you. You don't really have to compile for it to highlight the errors. You can do source generation for your gutters and and setter methods, which we'll talk about. I promise. And all the other stuff that you might need. It can do constructors. All that cool stuff. So ultimately it's a matter of preference, but Eclipse is mine so that's what we're gonna do and we're gonna have to click something here. So we want Eclipse IDE for Java developers. And you can create a start menu, enter your shortcut if you want. Let's do a shortcut. And then. Installation failed with error. Woah. This is always fun times. All right, so Eclipse. Let's just go to the desktop and dev pro. Let's try again. Well, seeing that there are sometimes errors is always a good thing, right? Because when things go without a hitch it just looks like magic and everybody goes well, I can't do that it is broke on my machine. A lot of times it's broken our machines as well, so just try something different and we'll see what happens. And this is the part that was gonna take a little bit longer, right, Mark? Yeah, I think so. So, could you highlight, well, you talked about why we should use Eclipse but could you give us a little more detail about why did you choose Eclipse as your primary IDE? Even for that can you talk about IDEs in general? Like, what is IDE? And make sure that we're all on the same page there. Yes, that's a really good question. I think we have been using that acronym without sort of clarifying but an IDE just stands for Integrated Development Environment and it's something that all programmers want to have access to. You want to pick one or the other. It sort of makes it a lot easier than typing into a text file and then changing the file extension and compiling it from the command line. Those are kind of some obscure steps that you might not want to do every time. And especially when you have a complicated build path, it gets really hairy really fast. So, yeah. Eclipse is a great tool to help you manage all that nonsense that you don't wanna have to do every time you write a program. So I have heard that the some programmers are, unless you use Notepad, plain Notepad and write down your Java files and you compile everything from the command line then you're not a real programmer. What are your thoughts on that? I mean I think every industry is going to have their puritans but I think if you've got resources in front of you that can make your job easier then you should use them. And going back to the old principle don't repeat yourself. It's sort of the same kind of vibe. Yeah understandable. It looks like we have something that we need to accept, right. Yeah, so these are the terms of service. Yeah. Good stuff. So we can just click accept here. And we should always definitely read this. Always read them, yeah. Always read those but just for the sake of time, we are being expeditious about this. Now, Mark while this is installing, I want to double back a little bit. We talk very high level about Java but could you illuminate some of the really strong points of the Java language? What are we going to learn that are gonna make us more productive? Or what is available to us? Do we have to write everything from scratch? Cuz you've been talking about don't repeat yourself. Build on the work of others. Is that something that Java is, is that in the Java ecosystem so to speak? Yeah, so as I alluded to, Java has a lot of cool inbuilt libraries. There's a math library. There's stuff for file IO and there's also things other people have done. There's j-unit which is going to help us with unit testing. That's something that I think is important to impart upon young programmers is to make sure your code works and meets the specifications that it has to. Yeah, so we're going to cover that too. Now Mark, some of our viewers may not know what unit testing is. Could you just give us a brief rundown about what is unit testing? Yeah. So the general idea is you write a test, either before or after you write your code and you run the test and if your code passes the test, then you can move on to the next development requirement, if you will. And if it doesn't, you know that your code is faulty in some way and you know what your code is doing wrong because of what it's returning. So it allows you to diagnosis your problems a lot easier and it allows you to make sure that your code is ready for production and it's not going to be dangerous out there. Dangerous? You made me scared Mark. I'm already terrified but you said something very interesting there that I've heard kind of back and forth. Right. Your tests before or after. I've heard real staunch you should always write tests first and then write your code, but you said you could write it after. What are your thoughts? Could you give us an idea of why you said it's okay to write tests- Yeah. Afterwards? I think it's generally okay to write tests afterwards but if you want the tests to drive the way you write your code and to meet very specific requirements It's best to write them beforehand and so that's a principle called test-driven development. Some people adhere very strictly to it. I think it's important as a concept that you use unit tests and that you make sure all the other parts of your code are working properly but if you program better without writing them first then by all means, I don't really think it's necessary. I do think some people go a little bit too crazy. I've seen people write unit tests for getter and setter methods which are really just one line of code and I think that's a little bit overboard. There's a good balance there that we should, you're going to help us keep in mind as we learn more about that. Mark, it does look like we do have a launch button and I always like launching, right? [SOUND] Yeah, take off. Take it through us. All right. Take us through it. [SOUND] So Eclipse is coming up here. Eclipse Neon 3. That's the current version. Eclipse Oxygen's coming out real soon, I think. I'm not sure when in June but it's definitely coming out in June so stay posted for that. All right, so if you're watching this at a different time and you have well, Eclipse Oxygen or Eclipse Flooring or Eclipse Chlorine, who knows? Well just know that this is going to be very similar to what you're doing. Just the names are gonna be different. So we have this menu here, Mark. Can you take us through what we're actually doing here? Yes, this is the workspace. This is just where all your code is located for any given project. Some people use a different workspace for every project. You don't really have to. I think I'm gonna create a new one here for our ITPro stuff. And, devpro/workspace, cool. We'll do that and we're also gonna check use this as the default and do not ask again. You don't necessarily have to do that. If you've got multiple workspaces, again, some people like to do it this way instead. Then yeah, you can do that as well, not check it as the default and just pick your workspace every time. If you've sorta got different things that you program for, maybe you program for open source your free time but you also have a job you do this for, you might want to have two workspaces. A home and a work one. That's something I've done in the past and I think it works well. All right so then that's creating the workspace and then this is the startup time always like this for eclipse? Is there always like a startup overhead? I know for some of the other IDE's that I've played with the startup overhead, it's really bad the first time. There's still a little bit the next time, but it gets a little bit less. Is that the story for eclipse? I would say so, yeah. You've gotta create some directories for the work spaces and all that. But mostly this will probably run faster on your machine. My computer's pretty terrible. [LAUGH] Self deprecating computer humor. I love it, I love it. So we're just waiting for this to start up so to speak. I do love that graphic though and there we go. Mm-hm. So, you sorta get this nice intro screen here. We don't really need to go over all that because we're going to be creating a hello world type application ourselves anyway. We can create a new Java project here, but that's not the way we're going to be doing it in the future. Let's just go up here, File, New, Java Project and we are going to use mostly the default options here. It's gonna to take a second here. Let's call this DevProHelloWorld. The convention for program names and class names is to capitalize the first letter of every word. And so then you'll get this package explorer. I clicked something without explaining it, sorry. This is a maximization thing for when you're looking through your file system for your Java projects. We have this cool new project folder here. And it's got a source folder. And we've gotta create our first class now, so we're gonna go to New and we're gonna do Class. And this is sort of the fundamental building block of Java, you're gonna have a lot of these classes and they're sort of gonna interact with each other. They're gonna represent sort of an abstract type of object, but that's sort of a more complicated topic for now. All we have to really do is write a class with a main method and we're going to get to that in a second. Do we still have time? I think we're good. I think I see where you're going and I think we can make it through in this episode. So we can also create a package here, what should we call it? Awesome sauce. Awesome sauce. I think that's great. Alright so, we're going to have to put that package declaration at the head of every class that we write that's inside this package. But that's fine. And we'll just, every class we write for now will just be Awesome Sauce. I love it, that's great. And this can be DevProTester, or something. And we don't really need that. We actually don't want to create an e-method stub so that way we can write it from scratch and show you. Alright, so this is just building out that file. Seems like a lot of work just to have that file, well, generated for us. What is actually going on behind the scenes? Is it making sure that everything is kind of pointing to the right places? Or is there any type of magic? Or is there just a helper that helps things get more complex? I think it helps you keep all of the compilation stuff in check. So it knows where the main class is for the projects are and stuff like that. And yeah, so here if you can see in the code. We've got package Awesome Sauce. That's the package we declared. And we got a public class DevProTester. Which is what we chose to name our class. All right Mark so, I know you're getting, you're getting excited, I can tell. But one quick thing. I tend to use a very large font. Whenever I'm programming, just to help with eye strain. And, I just wanna make sure everybody can see. Could we make that font just a little bit bigger? Well, so everybody can see it in all its glory. Yeah, I think that's really important to do, because programming should be accessible. Everyone, we might have people who have bad eyes that need to do this, and so we're gonna go and do that. We're going to go up to Window, and Preferences. And this is where you're going to change most of your settings for eclipse anyway. We can look up here. You've got all these different tabs. Kind of confusing, but we're just going to go with General, and Appearance, Colors and Fonts. And, we're going to look for our basic font here, Text Font, Edit. And it's gonna come up. And we're gonna blow up the size. What size do you think we should use? Let's try probably 18, 20, somewhere around in there. Just because that's a font size that I use and it tends to work fairly well. Okay. Whatever works, so I'll apply that, and look at that, code looks nice and big. That's beautiful. We can see everything on the screen, good stuff. All right, now I'm ready for this first program. Take it away, Mark, let's see what's involved. So we're gonna type public static void main, and your gonna do a parenthesis here, (String[] args), and that's gonna be really confusing and we can't really explain it right now cause there's a lot of words in there that are sort of a higher level. So just sort of think of it as casting a spell. You do it whenever you're writing an entry point to a program and this sort of where the program knows that it needs to start. And you've got this, it's called the main method, we can go ahead and get that out there. But this first line of the main method is where your program is gonna have it's entry point, that's where it starts. And so, this main method has to be inside of the class, and inside of a file, right? So, in this case we've got it in a package. Some of you, if you didn't create a package, you might have like a default package. And then you won't have this package declaration here. But we made ours in a package just to help keep everything for our projects nice and organized. And so now we can type System.out. Also you can see I've got all these code recommendations coming up here. It's a great feature of eclipse, sort of autocompletes lots of your stuff. I'm probably just going to type most of the things out completely so we're all on the same page. And we're gonna do println and we have to end every statement in eclipse and Java with a semicolon. And we're going to do a string here which is a concept we'll explain more later. We're just going to put "Hello World!" Now could we shrink down that task list on the side just to see all of that in it's glory at the same time. So we can sort of just click X's on these things that way we'll have a lot more space to work with here as our lines get longer. Well, Mark, is there any way we can make that task list go away, cuz I wanna see all of that program in its glory. Yeah, that's a good question. So, since we sorta blew up our font size, now we've got this problem where some of this text is getting covered up by this task list and outline. We don't really need any of that stuff, so we can just click X's on that. Get it all out of the way. Whatever you've got there, just get rid of it for now. It's not that important. What we really need is this Package Explorer which we can also shrink down. If you sorta grab onto this little thing, you can drag it and make it a little smaller so it doesn't take up as much space when we're typing our code in our main editor. Cuz that's what's really important right now. And you know you can click Control S here, and you'll notice there was an asterisk there went away. So it just means that we've saved our code. And now we can go ahead and sort of compile it. And we're gonna do Run As Java Application. Generally, you can just click this green button and if you've done it before it'll work fine. But as you can see down here in our console, this is where your console is going to appear down here on the bottom. This is sort of the output for whatever programs you run whenever you do System.out.println you're gonna get text down here in your console. And you can also, later on we'll go for sort of more I/O stuff and we'll talk about how you can type stuff into this console as well, and make your programs more interactive. Well, Mark, this has been a wonderful ride. Just as a quick review, we installed the JDK, we installed eclipse, and we actually wrote our first Java program and ran it. We had a lot packed into this episode, but it does look like we are out of time for this episode. But please join us back as we continue our Java adventure. Signing out for Dev Pro TV, I've been your host Justin Denison. I am Mark Davis. Thanks for watching. We will see you next time. [SOUND]

Overview

In this series, Mark and Justin walk you through the hoops and hurdles of the Java syntax by providing examples and common mistakes and shortcuts you'll be faced with. By the end you'll have an understanding of all of the syntax as well as common Java tools. You will have built feature-filled programs to simplify your life and wrangle the challenges of junior programming jobs, so if you're ready to learn Java as a first or second programming language then join us!

Learning Style

On Demand

Length of course

13h 32m
33 Episodes

Here are the topics we'll cover

  • Object Oriented Java
    Learning Options

    Options for this course