It really depends on how much of the compiler you want to implement yourself. If your trying to do everything yourself, it won't be easy. It also depends on what features you want the language to have.
Buy the Dragon book. It's really academic, but its explanations are very good. I have an older edition and I have to say it's somewhat lacking in certain parts, but when used together with say "Modern Compiler Implementation in (C or Java)" by Appel, you can get it done. Building a compiler in Java, isn't the greatest idea, but Java makes it easier. I suggest using C++, where you can leverage OO facilities for building an abstract syntax tree, although you could C structs too.
I highly recommend using a lexer generator and parser generator, where you need to learn regular expressions and context-free grammars. Because coding a parser and a lexer will be very tough, depending on their complexities. You will also need to be proficient in whatever assembly language your targeting.
Even with knowledge of all the above, it will still take a lot of hard work just to implement a procedural language. At a minimum, a working compiler written in Java for a procedural C-like language, with only three built-in data types, type checking, and name checking, is a few thousands lines of code. You should have a few years of coding experience if you want to try to do this.
I even suggest finding a university course that will assist you in designing a compiler.