Study Java SE 8

The kalu

New Member
Joined
Apr 9, 2017
Messages
6
Reaction score
0
Hi Guys,

I am sure this must have been discussed before but I cant seem to find any information on this.

I am I IT System administrator but I am really not feeling this anymore. I have decided to take up programming, I have done a bit of research and read a few books and decided to start studying Java SE 8. Where do I start? is this the best language to start with? What books or Videos can I get? The institutions ask about 15k for a 5 day course but I am sure self study can work too. I have done self study many times before.

I know the where can I start is a very vague question, but I want to start right from the beginning like someone who has never been exposed to coding before.

Please help anyone
 
Hi Guys,

I am sure this must have been discussed before but I cant seem to find any information on this.

I am I IT System administrator but I am really not feeling this anymore. I have decided to take up programming, I have done a bit of research and read a few books and decided to start studying Java SE 8. Where do I start? is this the best language to start with? What books or Videos can I get? The institutions ask about 15k for a 5 day course but I am sure self study can work too. I have done self study many times before.

I know the where can I start is a very vague question, but I want to start right from the beginning like someone who has never been exposed to coding before.

Please help anyone

I will try pluralsight for a month($30 per month). It straight to the point and structured nicely.
When you cover the path you can write level 1 and Level 2 java. Level 3 will require lot experience and exposure to pass that test.
 
The best place to start will be by starting a small project, setting a goal for yourself to finish it, and to push hard to get it done. Best place to learn how to do specific things in code is the official documentation. A software developer should be able to take the experience (let's rather say what you have learnt) they have and apply it to any other language. The basic fundamental will always stay the same. Build up a portfolio to show if you go for interviews, this will make you probably stand out.

At the end of the day Java, C++ and C# are great languages to learn from, as you can learn the fundamentals from all of them. You can also look at other languages, but sticking to those while learning is a good idea. Choose one and stick to it, that way you will grasp the concept a bit better. Universities start off students on C++ generally.

I'm not going to go into the deep end and mention qualifications, but a few certs will help you get noticed, but candidates with degrees might be preferred at times depending on requirements etc. I'll let someone else discuss this, as this generally turns out into an argument which I have no interest to participating in.
 
I will try pluralsight for a month($30 per month). It straight to the point and structured nicely.
When you cover the path you can write level 1 and Level 2 java. Level 3 will require lot experience and exposure to pass that test.

Sign up for Microsoft Dev Essentials and you get 3 months(?) free pluralsight usage.
 
You can hit the ground running and start with Java.
I did it in matric and managed fine with it.

I think a lot of people recommend python for starters because the syntax is EZ

im not a dev
 
You can hit the ground running and start with Java.
I did it in matric and managed fine with it.

I think a lot of people recommend python for starters because the syntax is EZ

im not a dev

Probably just me, but I think python is harder. Damn spaces and tabs does my head in. I guess if you dont know any other language its easier, but coming from c or java etc., python will likely cause you to sling your laptop out of the window :)
 
Java is a great language to start off with, I second the Udemy idea, but I strongly recommend you get an introductory textbook and do the 1st few chapters to get used to the basics and the syntax. By the time you get to data structures you'll only be worrying about program logic, that's where the fun really is.
 
Probably just me, but I think python is harder. Damn spaces and tabs does my head in. I guess if you dont know any other language its easier, but coming from c or java etc., python will likely cause you to sling your laptop out of the window :)

I hate the fact that whitespace indicates scope in Python - A good IDE, like Spyder, helps though
 
I'd consider doing a bit of python on the side, if I could go back and do that I would. Only learning python now after nearly 5 years of pure Java (SE and EE)

Also, embrace the functional API. It's awesome :)
 
Probably just me, but I think python is harder. Damn spaces and tabs does my head in. I guess if you dont know any other language its easier, but coming from c or java etc., python will likely cause you to sling your laptop out of the window :)

:) could not agree more. The missus slings ruby and it's hella hard to grok quickly if you have a history with java/as/js
 
Nothing wrong with Java as your first language; it's not perfect but then finding a "perfect" language is a lot like picking a perfect ice cream -- we aren't going to agree.

As for Java, it's been around for quite a while, which is both good and bad.
  • Good because it's stable, has a ton of books, articles covering how to do X, Y, Z....
  • Bad because it incorporates a lot of language design that was only conceptually interesting, but impractical for anything but the simplest object graph, and that doesn't even touch on the pain in the arse parts.

Just avoid:
  • old articles & books i.e. focus on the new Java 8 / 9 way to solve problems.
  • subclassing / inheritance & rather learn about interfaces (same concept but interfaces are more flexible and less rigid)
  • null pointers and mutability
  • ...
 
[)roi(];20504099 said:
Nothing wrong with Java as your first language; it's not perfect but then finding a "perfect" language is a lot like picking a perfect ice cream -- we aren't going to agree.

As for Java, it's been around for quite a while, which is both good and bad.
  • Good because it's stable, has a ton of books, articles covering how to do X, Y, Z....
  • Bad because it incorporates a lot of language design that was only conceptually interesting, but impractical for anything but the simplest object graph, and that doesn't even touch on the pain in the arse parts.

Just avoid:
  • old articles & books i.e. focus on the new Java 8 / 9 way to solve problems.
  • subclassing / inheritance & rather learn about interfaces (same concept but interfaces are more flexible and less rigid)
  • null pointers and mutability
  • ...

Dumb question, but why? Does it not depend on what it is that you're trying to achieve.
If it's concepts, such as employee is taxable, then sure as each tax calculation is probably different, but if all employees use the same tax calculation, then it would you'd make it a class that all employee types extend from.

Really curious. It should be interface for anything abstract, inheritance for anything shared across a multitude of things that is constant. Of course you can break that rule if the need arises, that's been my guideline so far.
 
Yeah, I wouldn't skip over inheritance, infact I'd advice you make sure you understand exactly what it's all about and how it works. Later on it'll be fun contrasting it with how it's implemented in other languages like C++. A lot of the concepts you'll learn will also apply in other similar languages, but of cause there will be some differences.
 
Sure, but instead of talking only to that Java specificity (inheritance), Let me rather rather talk ito the underlying needs driving all of this; I.e. Our need for parametricity and inclusion in code, (also called as parametric and subtype polymorphism).

To summarise:
  • Parametricity; is used to avoid code duplication for equivalent processes, for example: the ability to write a single (generic) function that works the same across different types (Sort, Filter, ...)u
  • Inclusion where we need polymorphism for interchangeability, for example: the ability to write a function can take an object that is ostensively interchangeable for another of "equal" type (Vehicles: Car, Van, ...)

Ok with that said, let me talk around the problems with it.
Aside from the obvious dependency issues, type inference with sub typing is rather awful when you stress it, and has led to many of the stranger Java design defects. Ultimately the purpose of a static typing system is rule out the bad stuff (crashes) without ruling out too much of the good stuff.

Once you go down the road of sub typing everything, you end up with a number of situations where you'll be forced to pick between sacrificing static type safety versus wrapping a lot of this with ad hoc coercions that serve no purpose but to help inheritance play nicely with the Java static type engine.

You simply need to define an interface like Functor i.e. the ability for a container object to mapped over with a parameter provided transformative function: e.g. In Java 8 this ability has been incorporated in Streams.

Basically a functor is just an Interface stipulating that each object that implements it, have a higher order function called Map; and yes that sounds simple enough. But practically it's a pain in the arse to implement across multiple Java object types; because the notion of parametricity is completely lost when inclusion(subtype) polymorphism is involved. You only need to look at the messiness of Java 8's stream implementation to pick up on this, or even simply try to make Java's ArrayList comply with a new interface (e.g. Applicative Functor)

Shall we count the number of *new* Java List types of github, or more specifically those that were forced to replicate most of the List code to add some *missing* feature?

In Java, many of the scenarios where inclusion has been the first grab bag approach can be replaced with interface methods, which has the added advantage of being also parametric in approach, plus adding new methods to the interface also means that all implementing types receive this behavior similar to inclusion(sub typing). It's unfortunately limited when compared to Haskell, Rust, Swift, ... and being Java with its historic roots firmly planted in OOP land it's certainly not perfect by any measure, but situations are still fairly rare when I'm forced to look at inclusion for my own types. Granted I had to rewrap many of the default Java types to work around many of the parametricity constraints.

FYI newer languages like Haskell, Rust, ... don't even support inclusion polymorphism; simply the same flexibility is achieved using a different approach, with some similarity to interface methods. Swift on the other hand was forced to support subtyping because of its inherent compatibility with Apple's Objective-C frameworks, but at the same time they wanted to tackle it in a more flexible way like Haskell & Rust -- which they've called Protocols, and their new catch phrase Protocol Oriented Programming (POP). Mixing these two approaches has been very problematic; simply said its not easy to do both of these and do them well. Ultimately Java needs to decide just how far it wants to go down this road, because inevitably they'll hit a point where backward compatibility has to be sacrificed to stay relevant.

Anyway pm if you need any code examples of this.
 
Probably just me, but I think python is harder. Damn spaces and tabs does my head in. I guess if you dont know any other language its easier, but coming from c or java etc., python will likely cause you to sling your laptop out of the window :)
Really? I found it the easiest language to learn...ever. After the likes of C# and Java, Python's syntax is just so nice to work with.

Don't get what is so difficult about it though. Always have the "replace tabs with space" setting on in your editor and off you go. The rest is borderline basic English. I mean what would the equivalent of this look like in c#, c, java etc?

Code:
histogram = {"known": 0, "unknown": 0}
file = open("names", "r")
for line in file:
    if line.strip() in ("Alfred", "Billy", "Susan"):
        histogram ["known"] += 1
    else:
        histogram ["unknown"] += 1

print '''The data is in and there are:
    %d known applicants
    %d unknown applicants''' % (histogram["known"], histogram["unknown"])

Show me a developer that cannot read and understand that?
 
Top
Sign up to the MyBroadband newsletter
X