code: function (boostingStrategy) {
          this.logger = Logger.getLogger("GradientBoostedTrees_js");
          var jvmObject;
          var obj = Utils.unwrapObject(boostingStrategy);
          if (obj instanceof org.apache.spark.mllib.tree.configuration.BoostingStrategy) {
              jvmObject = new org.apache.spark.mllib.tree.GradientBoostedTrees(obj);
          } else if (boostingStrategy instanceof org.apache.spark.mllib.tree.GradientBoostedTrees) {
              jvmObject = obj;
          } else {
              throw "GradientBoostedTrees constructor accepts only a BoostingStrategy";
          }
          JavaWrapper.call(this, jvmObject);
  
      }
docs: A class that implements
  [[http://en.wikipedia.org/wiki/Gradient_boosting  Stochastic Gradient Boosting]]
  for regression and binary classification.
  
  The implementation is based upon:
  J.H. Friedman.  "Stochastic Gradient Boosting."  1999.
  
  Notes on Gradient Boosting vs. TreeBoost:
  - This implementation is for Stochastic Gradient Boosting, not for TreeBoost.
  - Both algorithms learn tree ensembles by minimizing loss functions.
  - TreeBoost (Friedman, 1999) additionally modifies the outputs at tree leaf nodes
  based on the loss function, whereas the original gradient boosting method does not.
  - When the loss is SquaredError, these methods give the same result, but they could differ
  for other loss functions.
  
  @param boostingStrategy Parameters for the gradient boosting algorithm.
  @classdesc
   
  @param {module:eclairjs/mllib/tree/configuration.BoostingStrategy} boostingStrategy
  @class
  @memberof module:eclairjs/mllib/tree