1. XeLaTeX
For XeLaTeX, the document should be saved in UTF-8 encoding.
1.1. xeCJK package
I advice you to use XeLaTeX with package xeCJK. An example:
\documentclass{article}
\usepackage{xeCJK}
\setCJKmainfont{MS Mincho} % for \rmfamily
\setCJKsansfont{MS Gothic} % for \sffamily
\begin{document}
\section{日本語}
お早う
\textsf{こんにちわ}
\end{document}
See manual of xeCJK and fontspec for more information.
Chinese and Korean work the same. In fact, xeCJK is originally designed for Chinese by Prof. 孙文昌.
xeCJK: http://mirrors.ctan.org/macros/xetex/latex/xecjk/xeCJK.pdf
fontspec: http://mirrors.ctan.org/macros/latex/contrib/fontspec/fontspec.pdf
1.2. zxjatype package
zxjatype internally calls xeCJK, with some configurations for Japanese. You can also use zxjafont package to use some predefined fonts. It is easier to use compared to raw xeCJK. An example:
\documentclass{article}
\usepackage{zxjatype}
\usepackage[ipa]{zxjafont}
\begin{document}
\section{日本語}
お早う
\textsf{こんにちわ}
\end{document}
zxjatype: http://zrbabbler.sp.land.to/zxjatype.html
1.3. bxjsclasses with zxjatype
bxjsclasses bundle provides some Japanese local classes. It can be used with different TeX engines.
\documentclass{bxjsarticle}
\usepackage{zxjatype}
\usepackage[ipa]{zxjafont}
\begin{document}
\section{日本語}
お早う
\textsf{こんにちわ}
\end{document}
2. LuaLaTeX
For LuaLaTeX, the document should be saved in UTF-8 encoding.
2.1. luatexja-fontspec package in luatexja bundle
luatexja bundle provides Japanese support for LuaTeX. A simple LaTeX example:
\documentclass{article}
\usepackage{luatexja-fontspec}
\setmainjfont{MS Mincho} % \mcfamily
\setsansjfont{MS Gothic} % \gtfamily
\begin{document}
\section{日本語}
お早う
\textgt{こんにちわ}
\end{document}
2.2. ltjsclasses classes in luatexja bundle
ltjsclasses provides some Japanese document classes for convenience. An example:
\documentclass{ltjsarticle}
\usepackage{luatexja-fontspec}
\setmainjfont{MS Mincho} % \mcfamily
\setsansjfont{MS Gothic} % \gtfamily
\begin{document}
\section{日本語}
お早う
\textgt{こんにちわ}
\end{document}
3. upLaTeX + ujclasses
upLaTeX is a Japanese TeX format. It needs UTF-8 encoding.
An example:
\documentclass{ujarticle}
\begin{document}
\section{日本語}
お早う
\textgt{こんにちわ}
\end{document}
Compile with
uplatex foo.tex
dvipdfmx foo.dvi
4. pLaTeX + jsclasses (Relatively Old)
pLaTeX is a Japanese TeX format. Documents should be saved in SJIS encoding. Documentation in English is available here.
An example:
% SJIS encoding
\documentclass{jsarticle}
\begin{document}
\section{日本語}
お早う
\textgt{こんにちわ}
\end{document}
Compile with
pdfplatex foo.tex
or
platex foo.tex
dvipdfmx foo.dvi
5. CJK package (Obsolete)
Older CJK package is still useful. It works well with PDFLaTeX and LaTeX (Dvips, dvipdfmx). If the document has only a few wide characters, CJK package may be a reasonable choice with better compatibility.
Be sure you have installed the proper CJK fonts for CJK package. Typically, this is not done. TeX Live and MiKTeX have a wadalab package, install it when necessary. (Also ipaex and ipaex-type1) Then you can use:
% UTF-8 encoding
\documentclass{article}
\usepackage{CJKutf8}
\begin{document}
\begin{CJK*}{UTF8}{min}
\section{日本語}
お早う
{\CJKfamily{goth} こんにちわ}
\clearpage\end{CJK*}
\end{document}
See $TEXMF/tex/latex/cjk/texinput/UTF8/c70*.fd, $TEXMF/tex/latex/cjk/contrib/wadalab/c70*.fd, etc. for pre-installed CJK font families. Frankly speaking, these free Type1 CJK fonts are not very good. It is better to install the fonts yourself.