アプリ版:「スタンプのみでお礼する」機能のリリースについて

ハローワールドをこんな感じでやるのはわかります。
javaのアプリケーションでは必ずmain処理から始まるのはわかります
public class ClassSample {
public static void main(String args[]){
System.out.println("Hello! World!");
}
}
引用:https://eng-entrance.com/java-basic-main

でも、画面のボタンを押したときにはなぜ
main()の関数が動かないで直接メソッドを実行できるのですか?

A 回答 (4件)

>main処理が動かない理由についてはわかりませんでした。


>(明示的に書いてないです。)

ひょっとしてJavaの話ではない?

まあ、それは置いといて、ボタンの押下→サーバ側アプリケーションの起動
という図式は必ずしも成り立たない。Javaでそれをやったら遅くて使いものに
なりません。

サーブレットの場合、一つのインスタンスがメモリにいて、複数のブラウザの
要求を裁いている。つまり、webアプリはもっと前に起動していて、
ボタン押下(サブミット)時、イベント(電文受信)を処理しているに
過ぎないということです。
    • good
    • 0
この回答へのお礼

お礼遅れ申し訳ありません、
Javaの話です。
webアプリケーションのJava(サーブレット)はJavaアプリケーションとは別物と考えてとらえます。
Javaアプリケーションは実行すると必ずmain処理から始まりますが
webアプリケーションのJavaはxmlファイルにマッピングしたJavaの処理が呼び出されるようです。
その理由はローカルで動作するアプリケーションではなく、
常時起動しているサーバー側がリクエストを受け取って応答する動作だからとざっくり理解いたしました。

ひとくくりに周りの方々はジャバジャバと挙句の果てにはhtml上で動作しているJavaScriptも混同してジャバジャバ
おっしゃるので混乱しておりました。

課題としてはアプリケーションとの違いを理解するという意味で以下深堀してみます
・ボタン押下(サブミット時)にいかにしてサーバー上でJavaプログラムがフレームワークを介して動作しているかの深堀
・ローカル側でのサブミット時のイベントとサーバー側とのリクエストとレスポンスの構造の深堀

お礼日時:2018/10/11 05:43

それもそうなんですが>#2, それ以前に


Java と JavaScript は全くの別物
という指摘をしておきましょう.
    • good
    • 0
この回答へのお礼

ご指摘をありがとうございます。
めんどくさくても一緒に洗ってはいけないんですね。

お礼日時:2018/10/02 05:10

大昔のようにCGIとして(独立のプロセスとして)


webアプリを起動するならmainが呼ばれるでしょうが、
今のwebアプリは、サーバソフトウェアや
webフレームワークの一部として
うごくのでmainは呼ばれません。

一度、サーブレット/JSPの教科書を読んで見た方が良いですよ。
    • good
    • 0
この回答へのお礼

webで使われているJavaは私がみていたJavaとは別の何かなんですね。

調べてみましたが
WEB-INF/web.xmlに設定情報が書かれている
<servlet>要素に記述したJavaファイルとClassを登録して
<servlet-mapping>要素に画面のボタンを押したときに指定するURIを書くとそれが呼び出されるようです。
その理由については書いてないようです。

main処理が動かない理由についてはわかりませんでした。(明示的に書いてないです。)
Javaは必ずpublic static void main(String args[] ~ から動くと聞いたのですが、
・アプリケーションのJavaとは違うから
・webのフレームワークの一部として動くから実は裏で動いているけど見えない?
といったあたりなんでしょうか

お礼日時:2018/10/02 05:09

「画面のボタン」ってなに?

    • good
    • 0
この回答へのお礼

この画面の場合、
たくさんありますが、例えば[Q 質問・相談する]ボタンのmainBtn headerBtnです。
こんな感じで書いてあります。
javascriptの何かに飛んでmain処理が動いていると思われるのですが、
そこから先が隠れてて見えないです。

<p class="mainBtn headerBtn">
<a data-osccid="header_question" href="javascript:void 0;" data-login-modal-window-params="{&quot;urls&quot;:{&quot;logged_in&quot;:&quot;\/question\/?selected_category=2836&amp;from=https%3A%2F%2Foshiete.goo.ne.jp%2Fqa%2F10750787.html&quot;}}">
<span class="fa-stack"><i class="fa fa-circle fa-stack-2x w-circle"></i><i class="fa-stack-1x fa-inverse q">Q</i></span><span class="q-text" id="header_question_area">質問・相談する</span>
</a>
</p>

お礼日時:2018/10/01 05:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!