diff --git a/compiler/cpp/src/generate/t_java_generator.cc b/compiler/cpp/src/generate/t_java_generator.cc
index 54d99a4..ba7d639 100644
--- a/compiler/cpp/src/generate/t_java_generator.cc
+++ b/compiler/cpp/src/generate/t_java_generator.cc
@@ -78,6 +78,7 @@
   void generate_java_struct_result_writer(std::ofstream& out, t_struct* tstruct);
   void generate_java_struct_writer(std::ofstream& out, t_struct* tstruct);
   void generate_java_struct_tostring(std::ofstream& out, t_struct* tstruct);
+  void generate_java_meta_data_map(std::ofstream& out, t_struct* tstruct);
   void generate_reflection_setters(std::ostringstream& out, t_type* type, std::string field_name, std::string cap_name);
   void generate_reflection_getters(std::ostringstream& out, t_type* type, std::string field_name, std::string cap_name);
   void generate_generic_field_getters_setters(std::ofstream& out, t_struct* tstruct);
@@ -250,6 +251,7 @@
     "import java.util.HashMap;\n" +
     "import java.util.Set;\n" +
     "import java.util.HashSet;\n" +
+    "import java.util.Collections;\n" +
     hash_builder +
     "import com.facebook.thrift.*;\n\n";
 }
@@ -613,6 +615,8 @@
       endl;
   }
 
+  generate_java_meta_data_map(out, tstruct);
+
   // Default constructor
   indent(out) <<
     "public " << tstruct->get_name() << "() {" << endl;
@@ -1421,6 +1425,31 @@
     endl;
 }
 
+/**
+ * Generates a static map with meta data to store information such as fieldID to
+ * fieldName mapping
+ *
+ * @param tstruct The struct definition
+ */
+void t_java_generator::generate_java_meta_data_map(ofstream& out,
+                                                   t_struct* tstruct) {
+  const vector<t_field*>& fields = tstruct->get_members();
+  vector<t_field*>::const_iterator f_iter;
+
+  // Static Map with fieldID -> FieldMetaData mappings
+  indent(out) << "public static final Map<Integer, FieldMetaData> metaDataMap = Collections.unmodifiableMap(new HashMap<Integer, FieldMetaData>() {{" << endl;
+
+  // Populate map
+  indent_up();
+  for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
+    t_field* field = *f_iter;
+    std::string field_name = field->get_name();
+    indent(out) << "put(" << upcase_string(field_name) << ", new FieldMetaData(\"" << field_name << "\"));" << endl;
+  }
+  indent_down();
+  indent(out) << "}});" << endl << endl;
+}
+
 
 /**
  * Generates a thrift service. In C++, this comprises an entirely separate
diff --git a/lib/java/src/com/facebook/thrift/FieldMetaData.java b/lib/java/src/com/facebook/thrift/FieldMetaData.java
new file mode 100644
index 0000000..de530d6
--- /dev/null
+++ b/lib/java/src/com/facebook/thrift/FieldMetaData.java
@@ -0,0 +1,8 @@
+package com.facebook.thrift;
+
+public class FieldMetaData implements java.io.Serializable {
+  public final String fieldName;
+  public FieldMetaData(String fieldName){
+    this.fieldName = fieldName;
+  }
+}
