কম্পিউটার টিউটোরিয়াল

জাভা ৯-এ Jdeps এবং Jdeprscan টুলের পার্থক্য

Jdeps টুল আমাদের ক্লাসগুলোর ডিপেন্ডেন্সি অ্যানালাইজ করতে ব্যবহৃত হয়। "jdeps -jdkinternals jararchive.jar" কমান্ড রান করলে জাভা ইন্টারনাল API ব্যবহারকারী সব ক্লাসের লিস্ট প্রিন্ট হয়। Jdeps টুল ডিপেন্ডেন্সির বিস্তারিত বিবরণ দেয়, যেখানে Jdeprscan একটি অন্য ইউজফুল টুল spesifically "-for-removal" ফ্ল্যাগের সাথে কম্বিনেশন ব্যবহার করা হয়। এই টুল একটি জার আর্কাইভের দ্বারা ব্যবহৃত সকল ডিপ্রিকেটেড API দেখায়, এবং শুধু JDK মেথডের ডিপ্রিকেটেড ব্যবহার দেখানো হয়, থার্ড পার্টি জারের জন্য ডিপ্রিকেশন চেক করা যায় না।

Jdeps টুল:

  • "jdeps" হলো একটি ক্লাস ডিপেন্ডেন্সি অ্যানালাইজার টুল যা প্যাকেজ লেভেল এবং ক্লাস লেভেল ডিপেন্ডেন্সির জন্য ব্যবহার করা হয়।
  • "jdeps class_file" কমান্ড একটি ক্লাস ফাইলের প্যাকেজ-লেভেল ডিপেন্ডেন্সি প্রিন্ট করে।
  • "jdeps -verbose" কমান্ড ক্লাস-লেভেল ডিপেন্ডেন্সি প্রিন্ট করে।
  • "jdeps jar_file" কমান্ড একটি জার ফাইলের প্যাকেজ-লেভেল ডিপেন্ডেন্সি প্রিন্ট করে।
  • "jdeps --inverse --require module_name" কমান্ড একটি জাভা মডিউলের প্যাকেজ লেভেল রিভার্স ডিপেন্ডেন্সি প্রিন্ট করে।

নিচে, আমরা "jdeps --help" কমান্ড ব্যবহার করে অপশনগুলোর সম্পূর্ণ লিস্ট দেখতে পারি।

C:\Users\user>jdeps --help
Usage: jdeps <options> <path ...>] <path> can be a pathname to a .class file, a directory, a JAR file.
Possible options include:
  -dotoutput <dir>
  --dot-output <dir>
      Destination directory for DOT file output
  -s
  -summary
      Print dependency summary only.
  -v
  -verbose
      Print all class level dependences
          Equivalent to -verbose:class -filter:none.
  -verbose:package
      Print package-level dependences excluding
          dependences within the same package by default
  -verbose:class
      Print class-level dependences excluding
          dependences within the same package by default
  -apionly
  --api-only
      Restrict analysis to APIs i.e. dependences
          from the signature of public and protected
          members of public classes including field
          type, method parameter types, returned type,
          checked exception types etc.
  -jdkinternals
  --jdk-internals
      Finds class-level dependences on JDK internal
          APIs. By default, it analyzes all classes
          on --class-path and input files unless -include
          option is specified. This option cannot be
          used with -p, -e and -s options.
          WARNING: JDK internal APIs are inaccessible.
  --check <module-name>[,<module-name>...
      Analyze the dependence of the specified modules
      It prints the module descriptor, the resulting
      module dependences after analysis and the
      graph after transition reduction. It also
      identifies any unused qualified exports.
  --generate-module-info <dir>
      Generate module-info.java under the specified
      directory. The specified JAR files will be
      analyzed. This option cannot be used with
      --dot-output or --class-path. Use
      --generate-open-module option for open modules.
  --generate-open-module <dir>
      Generate module-info.java for the specified
      JAR files under the specified directory as
      open modules. This option cannot be used with
      --dot-output or --class-path.
  --list-deps
      Lists the dependences and use of JDK internal APIs.
  --list-reduced-deps
      Same as --list-deps with not listing
      the implied reads edges from the module graph
      If module M1 depends on M2 and M3,
      M2 requires public on M3, then M1 reading M3 is
      implied and removed from the module graph.
  -cp <path>
  -classpath <path>
  --class-path <path>
      Specify where to find class files
  --module-path <module path>
      Specify module path
  --upgrade-module-path <module path>
      Specify upgrade module path
  --system <java-home>
      Specify an alternate system module path
  --add-modules <module-name>[,<module-name>...]
      Adds modules to the root set for analysis
  -m <module-name>
  --module <module-name>
      Specify the root module for analysis
  --multi-release <version>
      Specifies the version when processing
      multi-release jar files. should
      be integer >= 9 or base.
Options to filter dependences:
  -p <pkg>
  -package <pkg>
  --package <pkg>
      Finds dependences matching the given package
      name (may be given multiple times).
  -e <regex>
  -regex <regex>
  --regex <regex>
      Finds dependences matching the given pattern.
  --require <module-name>
      Finds dependences matching the given module
      name (may be given multiple times).
  --package, --regex, --require are mutual exclusive.
  -f <regex> -filter <regex>
      Filter dependences matching the given
      pattern. If given multiple times, the last
      one will be used.
  -filter:package
      Filter dependences within the same package.
      This is the default.
  -filter:archive
      Filter dependences within the same archive.
  -filter:module
      Filter dependences within the same module.
  -filter:none
      No -filter:package and -filter:archive
      filtering. Filtering specified via the
      -filter option still applies.
Options to filter classes to be analyzed:
  -include <regex>
      Restrict analysis to classes matching pattern
      This option filters the list of classes to
      be analyzed. It can be used together with
      -p and -e which apply pattern to the dependences
  -P
  -profile
      Show profile containing a package
  -R
  -recursive
      Recursively traverse all run-time dependences.
      The -R option implies -filter:none. If -p,
      -e, -f option is specified, only the matching
      dependences are analyzed.
  -I
  --inverse
      Analyzes the dependences per other given options
      and then find all artifacts that directly
      and indirectly depend on the matching nodes.
      This is equivalent to the inverse of
      compile-time view analysis and print
      dependency summary. This option must use
      with --require, --package or --regex option.
  --compile-time
      Compile-time view of transitive dependences
      i.e. compile-time view of -R option.
      Analyzes the dependences per other given options
      If a dependence is found from a directory,
      a JAR file or a module, all c*lasses in that
      containing archive are analyzed.
  -q
  - quiet
      Do not show missing dependences from
      --generate-module-info output.
  -version
  --version
      Version information

jdeprscan টুল:

  • "jdeprscan" হলো একটি Java Deprecated API Scanner টুল যা ডিপ্রিকেটেড API এলিমেন্ট স্ক্যান করতে ব্যবহৃত হয়।
  • "jdeprscan class_file" কমান্ড একটি জাভা ক্লাস ফাইলের ডিপ্রিকেটেড APIs স্ক্যান করে।
  • "jdeprscan jar_file" কমান্ড একটি জার ফাইলের ডিপ্রিকেটেড APIs স্ক্যান করে।
  • "jdeprscan --release X" কমান্ড একটি স্পেসিফিক JDK রিলিজের ডিপ্রিকেটেড APIs স্ক্যান করে।
  • "jdeprscan --list --release X" কমান্ড একটি স্পেসিফিক JDK রিলিজের সকল ডিপ্রিকেটেড APIs লিস্ট করে।

নিচে, আমরা "jdeprscan --help" কমান্ড ব্যবহার করে অপশনগুলোর সম্পূর্ণ লিস্ট দেখতে পারি।

C:\Users\User>jdeprscan --help
Usage: jdeprscan [options] {dir|jar|class} ...
options:
  --class-path PATH
  --for-removal
  --full-version
  -h --help
  -l --list
  --release 6|7|8|9
  -v --verbose
  --version
Scans each argument for usages of deprecated APIs. An argument may be a directory specifying the root of a package hierarchy, a JAR file, a class file, or a class name. The class name must be specified using a fully qualified class name using the $ separator character for nested classes, for example, java.lang.Thread$State
The --class-path option provides a search path for resolution of dependent classes.
The --for-removal option limits scanning or listing to APIs that are deprecated for removal. Cannot be used with a release value of 6, 7, or 8.
The --full-version option prints out the full version string of the tool.
The --help option prints out a full help message.
The --list (-l) option prints out the set of deprecated APIs. No scanning is done, so no directory, jar, or class arguments should be provided.
The --release option specifies the Java SE release that provides the set of deprecated APIs for scanning.
The --verbose (-v) option enables additional message output during processing.
The --version option prints out the abbreviated version string of the tool.
  1. জাভাতে Collection এবং Collections-এর পার্থক্য

  2. জাভাতে wait() এবং sleep() মেথডের পার্থক্য

  3. জাভাতে JTextField এবং JFormattedTextField-এর মধ্যে পার্থক্য কী?

  4. জাভাতে JScrollBar এবং JScrollPane-এর মধ্যে পার্থক্য কী?