diff --git a/compiler/cpp/src/generate/t_java_generator.cc b/compiler/cpp/src/generate/t_java_generator.cc
index 3d318cb..14d4878 100644
--- a/compiler/cpp/src/generate/t_java_generator.cc
+++ b/compiler/cpp/src/generate/t_java_generator.cc
@@ -96,6 +96,7 @@
   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_java_field_name_map(std::ofstream& out, t_struct* tstruct);
   void generate_field_value_meta_data(std::ofstream& out, t_type* type);
   std::string get_java_type_string(t_type* type);
   void generate_reflection_setters(std::ostringstream& out, t_type* type, std::string field_name, std::string cap_name);
@@ -689,6 +690,8 @@
 
   generate_java_meta_data_map(f_struct, tstruct);
 
+  generate_java_field_name_map(f_struct, tstruct);
+
   generate_union_constructor(f_struct, tstruct);
 
   f_struct << endl;
@@ -1070,6 +1073,8 @@
 
   bool all_optional_members = true;
 
+  generate_java_field_name_map(out, tstruct);
+
   // Default constructor
   indent(out) <<
     "public " << tstruct->get_name() << "() {" << endl;
@@ -2002,6 +2007,30 @@
   indent(out) << "}" << endl << endl;
 }
 
+/**
+ * Generates a static map from field names to field IDs
+ *
+ * @param tstruct The struct definition
+ */
+void t_java_generator::generate_java_field_name_map(ofstream& out,
+                                                    t_struct* tstruct) {
+  const vector<t_field*>& fields = tstruct->get_members();
+  vector<t_field*>::const_iterator f_iter;
+
+  // Static Map with fieldName -> fieldID
+  indent(out) << "public static final Map<String, Integer> fieldNameMap = Collections.unmodifiableMap(new HashMap<String, Integer>() {{" << 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(\"" << field->get_name() << "\", new Integer(" << upcase_string(field->get_name()) << "));" << endl;
+  }
+  indent_down();
+  indent(out) << "}});" << endl << endl;
+}
+
 /** 
  * Returns a string with the java representation of the given thrift type
  * (e.g. for the type struct it returns "TType.STRUCT")
diff --git a/lib/java/test/org/apache/thrift/test/MetaDataTest.java b/lib/java/test/org/apache/thrift/test/MetaDataTest.java
index a018034..386ec9b 100644
--- a/lib/java/test/org/apache/thrift/test/MetaDataTest.java
+++ b/lib/java/test/org/apache/thrift/test/MetaDataTest.java
@@ -73,5 +73,15 @@
     if (FieldMetaData.getStructMetaDataMap(CrazyNesting.class) != CrazyNesting.metaDataMap ||
             FieldMetaData.getStructMetaDataMap(Insanity.class) != Insanity.metaDataMap)
       throw new RuntimeException("global metadata map contains wrong entry for a loaded struct");    
+
+    Map<String, Integer> fnMap = CrazyNesting.fieldNameMap;
+    if (fnMap.size() != 3) {
+      throw new RuntimeException("Field Name Map contains wrong number of entries!");
+    }
+    for (Map.Entry<Integer, FieldMetaData> mdEntry : mdMap.entrySet()) {
+      if (!fnMap.get(mdEntry.getValue().fieldName).equals(mdEntry.getKey())) {
+        throw new RuntimeException("Field name map contained invalid Name <-> ID mapping");
+      }
+    }
   }
 }
