私は、Snappy、Zlibなどのコンプレッサー実装(Java)を研究しています。ソースファイルの最上部の近くに、この行があります。誰も私にそれが何を意味するのか説明できますか?私は理解して"private static class clazz = SnappyDecompressor.class"ソースファイルで使用されるclazzとは何ですか?
HACK - Use this as a global lock in the JNI layer
@SuppressWarnings({"unchecked", "unused"})
private static Class clazz = SnappyDecompressor.class;
は、例えば、スナッピーに、SnappyDecompressor.javaは基本的にてきぱきとC /ネイティブ実装のラッパーであり、そのCの実装への呼び出しを行うために、Javaの層は、JNIインタフェースを介して呼び出しを行います。
スナッピー(Javaラッパー)のソースの上部には、SnappyDecompressor.javaはここにある:それは一見、JNI層から使用されている:コメントに示されているように
package org.apache.hadoop.io.compress.snappy;
import java.io.IOException;
import java.nio.Buffer;
import java.nio.ByteBuffer;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.io.compress.Decompressor;
/**
* A {@link Decompressor} based on the snappy compression algorithm.
* http://code.google.com/p/snappy/
*/
public class SnappyDecompressor implements Decompressor {
private static final Log LOG =
LogFactory.getLog(SnappyCompressor.class.getName());
private static final int DEFAULT_DIRECT_BUFFER_SIZE = 64 * 1024;
// HACK - Use this as a global lock in the JNI layer
@SuppressWarnings({"unchecked", "unused"})
private static Class clazz = SnappyDecompressor.class;
私は学習のクエストで本物の質問をしています。コメントや説明なしで正直な質問をすぐに投票している理由を説明できますか? – nikk
JNIは、Javaからネイティブコードを実行する方法です。 Javaで、JNIコードが参照するフィールドを定義したいと思うように思えます。 – yshavit