Skip to content

Instantly share code, notes, and snippets.

@shouichi
Created December 6, 2011 15:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shouichi/1438542 to your computer and use it in GitHub Desktop.
Save shouichi/1438542 to your computer and use it in GitHub Desktop.
*.aux
*.dvi
*.log
*.pdf
\documentclass[a4paper]{article}
\usepackage{graphicx}
\usepackage{amsmath, amssymb}
\title{Emulating java.nio on Top of java.io and java.net}
\author{Kamiya Shouichi}
\date{\today}
\begin{document}
\maketitle
\section*{Introduction}
Java Path Finder is a model checker for Java bytecode. It detects property
violations such as deadlocks or un-handled exceptions. It was open sourced by
NASA and many extensions are available. By using net-io-cache extension JPF
fully supports java.net and java.io. However JPF does not support java.nio at
all. Our goal is to support java.nio by emulating it on top of java.net and
java.io.
\section*{Motivation}
Let's say we want to implement a server. With java.net we can accept, read and
write but the problem is methods in java.net is blocking. Then we need to
spawn a thread for each connection to handle multiple connections. Obviously
this approach is resource hungry. On the other hand, with java.nio we can
accept, read and write without blocking. Therefore one thread can handle
multiple connections and it consumes less resource. Recent projects such as
Hadoop uses java.nio for this reason. So we believe verifying applications
that uses java.nio is important.
\section*{Approach}
We can (a) implement java.nio from scratch (b) implement java.nio on top of
the net-io-cache. It's time consuming to take approach (a) so we took
approach (b). We emulated java.nio by first invoking blocking connect and
managing logical state of connectivity.
\end{document}
RM=rm -f
LATEX=latex
DVIPDFMX=dvipdfmx
SOURCES=abstract.tex
DVI=$(SOURCES:.tex=.dvi)
PDF=$(SOURCES:.tex=.pdf)
all: pdf
gnome-open $(PDF)
dvi: $(DVI)
pdf: $(PDF)
.SUFFIXES:
.SUFFIXES: .tex .dvi .pdf
.tex.dvi:
$(LATEX) $<
.dvi.pdf:
$(DVIPDFMX) $<
.PHONY: clean
clean:
$(RM) *.dvi *.pdf *.aux *.log
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment