タグ

javaとprogrammingに関するdochanのブックマーク (27)

  • いまさらですが、職業Javaプログラマーなら理解しておいてほしい「継承」の意味について - 達人プログラマーを目指して

    正しく意味を理解している方にとっては、まったく常識レベルの話であり、何をいまさらと思われる方々も多いかと思いますが、大規模案件のレガシーコードなど、私が仕事で見かけるJavaのコードを読むと、「このコードを書いたSEやPGの方々は、はたして継承の意味を正しく理解していないのではないか」と思われる設計のコードに出会うことが少なからずあります。現在では改良されましたが(Javaプログラミング能力認定試験の問題がかなり改善されていました - 達人プログラマーを目指して)、以前のJavaプログラム認定試験の問題は、そうした不適切な設計がされている典型的な例となっていたのですが、実際、SI業界ではあのような品質のコードのシステムが今でも現役で多数稼動しているというだけでなく、現在でも新たに生み出されているというのは残念ながら紛れもない事実のようなのです。 確かに新人研修で「哺乳類を継承して犬クラスと

    いまさらですが、職業Javaプログラマーなら理解しておいてほしい「継承」の意味について - 達人プログラマーを目指して
  • はてなブログ | 無料ブログを作成しよう

    パスタ習作#2 飽き性な性格なのに#1を書いた以降も意外とパスタ熱が冷めなかった。当たり前のことだが、基が分かってくると応用ができる。応用ができると自由度が増す。自由を手に入れると継続ができる。批評家の福尾匠が自身の日記に、小倉知巳のペペロンチーノのレシピはよくで…

    はてなブログ | 無料ブログを作成しよう
  • 5年後に後悔しないJavaプログラムの書き方 - L'eclat des jours(2009-07-02)

    _ 5年後に後悔しないJavaプログラムの書き方 ここ数日、死ぬほど後悔しまくっているので、あらためて(というのは、数年前にも一度後悔しまくって、そのときの知見はあらかた処方箋とかコーディングの掟に書いているからだが)後悔しないための書き方をいくつか紹介する。 とにかく、ファクトリメソッドパターンを使うこと。 これは当に重要。しかも簡単でありながら効果は絶大。 だめな例。 public class FooBar { private Connection conn; ... protected void setup() { ... conn = DriverManager.getConnection(url); ... } urlを指定することや、DriverManagerの実装を交換すれば良いだろうと想定していても(というか、Connectionならそういう方法もあり得るが、そうはいかな

  • 「オブジェクト指向は教えないでください」ってなんてよくわかった会社だろうか - きしだのはてな

    よく分かってる会社だ。 次世代の基幹系オープンシステム開発に利用されるプログラミング言語は? - forest book 先日、SIer友人が新人研修の講師として Java を教えるというお話を聞きました。会社側からは「Java を教えるのではなく、"プログラミング" を教えてほしい。オブジェクト指向は教えないでください。」との指示を受けたそうです。 プログラミングにおいて、現場での「オブジェクト指向」の優先度が低いってことですよね。 そして、理論的にも優先度は低い。アルゴリズムとか関数的ななにかとかをちゃんと扱えるようになるのが先決ですね。 関数+制御構造がやはり基だし、その範囲がちゃんと扱えないで「オブジェクト指向」がちゃんと活用できるとは思えないし。 ただ、そうしようとしてもJavaではオブジェクト指向のための構文を知らざるを得ないので、その範囲のオブジェクト指向の知識は必要に

    「オブジェクト指向は教えないでください」ってなんてよくわかった会社だろうか - きしだのはてな
  • 実開発で分かったGoogle App Engine for Javaの“すごさ”

    ゴールデンウィークに特に予定のなかった筆者は,「ちまたで噂のGoogle App Engine for Java(GAE/J)とFlexでスケジュール共有ツールでも作ってみよう」と思い立ちました。およそ5日間かけて開発を進めたのち,2009年5月6日に「ご都合.com(画面1)」を公開しました。その後,はてなブックマークやニュースサイトなどでご紹介いただいたおかげで,公開後6日で約2000人の方にご利用いただいています。 そこで稿では,この「ご都合.com」の開発で実際に筆者が得た経験を通じて,GAE/JによるWebアプリケーション開発の実際とそのポテンシャルについて紹介します。 米Googleが2008年4月に発表したGoogle App Engine(画面2)は,「自分が開発したWebアプリケーションをGoogleのデータセンターで運用できるクラウドコンピューティング・サービス」です

    実開発で分かったGoogle App Engine for Javaの“すごさ”
  • バージョン管理に便利なSubversiveプラグイン (1/3) - @IT

    そもそもSubversionとは何か? Subversionとは、バージョン管理システムとして広く利用されているCVSの管理スタイルを踏襲しつつその欠点を解決したバージョン管理システムです。Google Trendsによると、日ではSubversionの検索数がCVSをすでに上回っており(2007年3月現在)、関心が高まってきています。 実際、筆者の周りでもSubversionを利用しているプロジェクトが増えてきています。稿では、SubversionをEclipseから利用するプラグインSubversiveとプロジェクト管理システム「Trac」との連携を中心とした利用ノウハウを提供します。 Subversionのメリット チェンジセットによるリビジョン管理 バージョン管理システムにおいて、ローカルで編集した内容をリポジトリへ反映するために行う作業を、コミットといいます。 CVSはファイ

    バージョン管理に便利なSubversiveプラグイン (1/3) - @IT
  • 良いプログラマを目指すなら「Java並行処理プログラミング」は今すぐ読むべき - higepon blog

    Java並行処理プログラミングを読み終えた。ここ 1 年に読んだ技術書の中でダントツのベスト。(2位はWorking Effectively With Legacy Code) 「Javaだから関係ない」と思った人にこそ読んで欲しい。僕もここ数年 Java のコードなど一切書いていないが、このを読んで得たものは非常に大きかった。 このでは マルチスレッドプログラミングにおける問題と背景、その対処方法 Java が提供している API の設計と実装 を解説している。分かりやすさとレベルの高さを兼ね備えたとても良い。翻訳も最高。 僕はこのを読んで、Java の並行処理プログラミングは、想像を遙かに超えて進化している事に驚きを隠せなかった。何回も twitterJava すげーと叫んだ。 これを読んでしまうと、最近僕が熱心な Scheme も含めて、自分の身の回りにあるプログ

    良いプログラマを目指すなら「Java並行処理プログラミング」は今すぐ読むべき - higepon blog
  • 経験年数2年半のJavaプログラマがちょっと書くよ。

    はてな界隈では、Javaって、あんま人気無いみたいだけど、ちょっと書かせてよ。 SIerでお仕事してると、派遣とか常駐とか言う形で、色んな会社に行って、違う会社の人とお仕事するんだけど、「経験年数n年(n>3)です」っていう人達が、恐ろしく使えなくてびっくりすることがしばしば。 特に、Java 5以降の機能 拡張for構文Enum可変長引数辺りを全く知らなかったり。 って言うか、Javaの極々基的な知識である equals/hashCodeの実装Serializableの実装Iteratorの実装が全く出来ないんだよね…。 そういうのを知らなくても(出来なくても)業務をこなせちゃう(?)のが、Javaの言語特性だとは思わないけど、こういう人達だらけなんだよね…。 PMが新しい人を採用しようとして、ここら辺の知識を割りと厳し目にテストしたら、候補が10人居たのに全滅で、プロジェクトのスター

    経験年数2年半のJavaプログラマがちょっと書くよ。
  • Java開発者が学んでおくべき3つの言語 - カレーなる辛口Javaな加齢日記

    http://codezine.jp/a/article/aid/1502.aspx ちょっと問題ありなので後で何か書こうと思っていたけど,一から書くのは面倒なのでちょっと拝借. http://d.hatena.ne.jp/Isoparametric/20070725/1185341963 要約すると難易度的には C++ >= Java == C# > Perl == PHP == Ruby == Python == JavaScript == C >= VisualBasic ……なんかおかしくね? 難易度の比較は難しいなあ. ポインタの有無:ポインタのある言語の方がポインタ関係のバグが出るので難しい. 言語仕様:C++は不必要なまでに複雑だと思う. 並列処理:有りの方が並列回りのバグが出るので難しい:Java.多分C#も? 他にも色々な基準での比較があるから,どれが簡単とかは言えない気

    Java開発者が学んでおくべき3つの言語 - カレーなる辛口Javaな加齢日記
  • ひがやすを blog - Javaを古くしたやつとRubyを煽っているやつ

    その正体はわかったよ。正体わかった瞬間からだが震えたよ。まじで。 まずは、羽生さんのこのエントリを見て欲しい。 http://d.hatena.ne.jp/habuakihiro/20070922#1190464426 その後によしおりのこの有名なエントリも復習して欲しい。 http://d.hatena.ne.jp/jYoshiori/20070826/1188150596 もうさぁ、変わってないよねぇ。昔からのこの構図。歴史は繰り返すっていうの。 あからさまにいうとさぁ。賢いスーツな奴らと、頭の固くてあわれで保守的なおやじの歴史だよ。 最初は、EJBだよ。EJB。これからは、ビジネスコンポーネントが流通して、もうプログラミングはいらなくなる。コンポーネントの組み合わせを考えるだけでOKみたいな。最初にね、キャッチーな言葉とともに、あらたなテクノロジーを広めようとするのは、賢いスーツな奴

    ひがやすを blog - Javaを古くしたやつとRubyを煽っているやつ
  • marsのメモ - 開発環境に関わるメモ

    今月で今やってる仕事の契約が切れるので,ここで培ったノウハウなどをメモしておこうと思う。 しかし,今後この手の開発系の仕事ができるとは限らないってのが悲しいところ。 プロジェクトポータルまわり とりあえず,Subversion(SCM), Trac(ITS/Wiki), Hudson(CI)は必須。この3セットがないプロジェクトなんてうんこ。 とにかくTrac-Subversionの連携が強力なので,Subversion以外のSCMは無視していい。HudsonはCIつうよりプロジェクトダッシュボードとして使うのが吉(数あるプラグインを有効利用しよう)。 marsのメモ - Trac marsのメモ - MacroBazaar - The Trac Project marsのメモ - 角谷HTML化計画(2006-04-25) marsのメモ - trac-post-commit-hookが

    marsのメモ - 開発環境に関わるメモ
  • オブジェクト指向分析/設計概論

    1 はじめに Javaプログラミングを行っていくうえで、大きな関門となるのはオブジェクト指向分析/設計でしょう。「クラスとオブジェクトの違いは」といった初歩的なものから、「再利用性を高めるためのフレームワークとコンポーネントの責任の配分の度合」といった高度なものまで、Javaプログラミングの要諦(ようてい)はオブジェクト指向分析/設計との関係の中にあるに違いありません。 Javaプログラマという立場からオブジェクト指向分析/設計を取り巻く状況を整理してみるのが稿の目的です。 業界標準のオブジェクト指向モデリング言語であるUMLと、代表的なオブジェクト指向分析/設計プロセスであるユニファイドプロセス、そして最近発展が著しいパターン技術をベースにJavaプログラマに取ってのオブジェクト指向分析・設計の枠組みを総括してみました。 2 オブジェクト指向とは何か オブジェクト指向といえばクラスやイ

  • javafaq.jp – このドメインはお名前.comで取得されています。

    このドメインは お名前.com から取得されました。 お名前.com は GMOインターネットグループ(株) が運営する国内シェアNo.1のドメイン登録サービスです。 ※表示価格は、全て税込です。 ※サービス品質維持のため、一時的に対象となる料金へ一定割合の「サービス維持調整費」を加算させていただきます。 ※1 「国内シェア」は、ICANN(インターネットのドメイン名などの資源を管理する非営利団体)の公表数値をもとに集計。gTLDが集計の対象。 日のドメイン登録業者(レジストラ)(「ICANNがレジストラとして認定した企業」一覧(InterNIC提供)内に「Japan」の記載があるもの)を対象。 レジストラ「GMO Internet Group, Inc. d/b/a Onamae.com」のシェア値を集計。 2023年10月時点の調査。

  • Yoshioriの日記: JavaはIteratorを使うべき理由

    ちょっと大人げないかもしれませんが・・・ 未来の日記 〜人間ってこんなもの〜 - メモ イテレータってこんな遅いのか。 半分正解で半分間違い。 多分(呼び出し元が書いてないので何とも言えないが結果から見ると)、 ArrayListを使ってるから そうなっただけ。 実際にやってみればすぐにわかる。 import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; public class Test { public static void main(String[] args) { List list = new ArrayList(); System.out.println("== ArrayList Start =="); testForLo

  • Iteratorより基本forループでArrayListのget()を使ったほうがいいなんて話はもはや百害あって一利なしです。 - 矢野勉のはてな日記

    Java yoshioriさんがいいこと書いてるのを発見しました。私も大賛成。今までArrayListが返ってきていたから getでfor文を書いていたとき。 フレームワークをバージョンアップして もしもそこがLinkedListになっていたら それだけでかなりのパフォーマンスの低下になる。 (Iteratorの誤差など遙か彼方へ吹き飛ぶほどに) そのリストを使っているfor文を全部調べ上げて すべて書式を変更するのはかなりの作業になるだろう。 だから、JavaではIteratorを使うべきだ。 関連記事はこのあたりかな。 http://d.hatena.ne.jp/BlacksmithMirai/20061017/1161081012LinkedListに関する不適切な説明J2SE 5.0虎の穴 拡張 for 文 Iteratorと基forループとの話は、櫻庭さんまで上記虎の穴のリンク

  • 業務系のクラスでインタフェイスの実装クラス名に「インタフェイス名+Impl」って名前をつけるのはダサいよね。 - wildcatsの日記

    実装に特性があるからインタフェイスと実装を分離するわけで*1 インタフェイスに対して実装が1クラスになる場合にはインタフェイスと実装を分離する必要が無いとボクは思うね。 追記:特定のDIコンテナの話はこのエントリと無関係です。 追追記:他所での議論の延長でボクの考えをここに書いただけなので、特定のDIコンテナとか特定の設計手法とかは何も関係ない(というか意識もしていなかった)話ですけど。 上にも例外として書いたしコメントにも書いたんだけど、たとえばトランザクション自動制御とかでFacadeに対してAspectをかけたい場合の設計手法の一つとしてインタフェイスと実装を強制的に分離(インタフェイスと実装が1対1)してDynamic Proxyを使う設計手法を用いても構わないのではないでしょうか?最近のプロジェクトでDIコンテナは使ってないけどHibernateのセッションとかの管理をFacad

    業務系のクラスでインタフェイスの実装クラス名に「インタフェイス名+Impl」って名前をつけるのはダサいよね。 - wildcatsの日記
  • 『Java言語で学ぶリファクタリング入門』

    このページは、 書籍『Java言語で学ぶリファクタリング入門』 のサポートページです。 最新情報やサンプルプログラムなどを公開しています。 目次 アマゾンで買う『Java言語で学ぶリファクタリング入門』 はじめに 書の想定読者 リファクタリングとは 書の目次 サンプルプログラムのダウンロード 誤りと訂正 ぜひ、感想をお送りください 更新履歴 はじめに こんにちは、結城浩です。 このページは、 書籍『Java言語で学ぶリファクタリング入門』 のサポートページです。 リファクタリングは、デザインパターンやエクストリームプログラミングに並んで、ソフトウェア開発の重要な技法として注目されています。 きれいなソースは読むのが楽で、修正するのが楽で、デバッグするのが楽です。 これに対して、きたないソースはすべてが大変です。 ではどうすれば「きれいなソース」になるのでしょう。 きたないソースをどうす

  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • 「Java SE 6完全攻略」第1回 Java SE 6 Hard Days Night:ITpro

    待ちに待っていた,Java SE 6がもうすぐリリースされます。されるはずです。されると思うのですが... なぜ,こんなに弱気なのかというと,もともとJava SE 6は今年5月のJavaOneの前にリリースされるされる予定でした。それが,10月に延び,さらに12月に延びたという経緯があるのです。 とはいうものの,最近のビルドでは新しい機能の追加はほとんどなく,バグフィックスがほとんどです。リリースが近いことは確実なようです。 そこで,今月からJava SE 6について取り上げていこうと思います。 Java SE 6では,スクリプトのサポートやWebサービス系のAPIが導入されたことなどが話題になりますが,それ以外にもたくさんの機能が取り入れられています。機能としてみればたいしたことがなくても,役に立つ機能が多くあるのです。 少しでも早くJava SE 6を試してみたいと思われる方も多いで

    「Java SE 6完全攻略」第1回 Java SE 6 Hard Days Night:ITpro
  • Java のクラスアンロード (Class Unloading)

    作成日:2004.05.18 更新日:2005.06.21 今後、随時書き足して行きます。多分。 はじめに Java は動的にクラスのロードとアンロードが行われる仕組みになっている。 クラスはクラスファイルの形でディスク上やネットワークに配置され、プログラム中でそれらが当に必要になった段階で JavaVM 上に読み込まれる。 またクラスはその使用が終わった段階でガーベージコレクターによって動的に回収され JavaVM からアンロードされる。 Servlet / J2EE サーバーなどはこの性質を利用して運用中にプログラムの一部を入れ替えるホットスワップ (Hot Swap) を実現している。 だがこの仕組みを実装するには少し工夫がいる。 この文書ではクラスのアンロードを実現するやり方について述べる。 1. クラスのロードとアンロードの基的な仕組み クラスローダー Java VM がクラ